我正在嘗試按照與原始規則集相同的規則來練習創建 Galaga 的克隆。我目前正試圖限制可以在任何時候出現在場景中的克隆預制件的數量,就像 Galaga 的彈丸在任何時候都被限制在螢屏上的 2 個一樣。我想讓玩家可以發射最多兩個射彈,它們會在 2 秒后或碰撞時摧毀(這部分正在運行),然后如果兩個射彈克隆處于活動狀態且尚未被摧毀,則無法射擊層次結構(不起作用,因為我可以實體化超過 2 的射彈)。
我已經通過 Google 梳理了大約 3 個小時,但沒有任何解決方案對我有用,至少在我嘗試實施它們的方式上是這樣。
非常感謝大家的幫助!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playerController : MonoBehaviour
{
public float moveSpeed = 1.0f;
public playerProjectile projectile;
public Transform launchOffset;
public int maxBullets = 0;
private GameObject cloneProjectile;
public Rigidbody2D player;
// Start is called before the first frame update
void Start()
{
player = this.GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
MovePlayer();
PlayerShoot();
}
public void MovePlayer()
{
player.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")) * moveSpeed;
}
public void PlayerShoot()
{
if (Input.GetKeyDown(KeyCode.Z))
{
var cloneProjectile = Instantiate(projectile, launchOffset.position, launchOffset.rotation);
maxBullets ;
if (maxBullets >= 3)
{
Destroy(cloneProjectile, 0.1f);
maxBullets --;
return;
}
}
}
}
uj5u.com熱心網友回復:
你可以稍微改變一下邏輯。只要游戲處于活動狀態, playerController 類的實體就會處于活動狀態,因此它會知道并保留 'maxBullets' 的值,直到您死亡或退出程式。因此,每次單擊“z”時,您應該做的第一件事就是運行檢查。如果當前活動彈丸的數量等于最大值,則使用邏輯“回傳”并退出該方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/362083.html
下一篇:如何為增量游戲制作關卡購買乘數?
