Unity 3 Dゲーム開発-U 3 D進級|常用APIのInvoke関数呼び出し

2668 ワード

金銭のコピーの細部が完備している
  • 宝箱落下
  • 宝箱プレハブにリジッドボディアセンブリを追加すればよい.

  • ボタン宝箱の大量落下を実現
  • 実例化生成宝箱のコードを単独で関数にカプセル化する.
  • forループを使用して、宝箱を一括生成します.

  • 宝箱自動落下
  • 現在、私たちはボタンを押して、プログラムが「宝箱を生成する」関数を呼び出して機能を実現しています.ゲームでは、この「宝箱を生成する」関数は、プログラムによって自動的に呼び出される必要があります.
  • は、Invoke関数を使用して実装される.


  • Invoke関数
  • Invoke関数コード
  • Invoke(string,float):数秒後に関数を実行します(1回のみ呼び出します).
  • String:実行する関数の名前;
  • Float:秒数、カウントダウンの時間.

  • InvokeRepeating(string,float,float):何秒[2番目のパラメータ]後に関数が実行され、その後何秒ごとに[3番目のパラメータ]が[N回繰り返し呼び出される]関数が実行されます.
  • CancelInvoke():このスクリプトのすべてのInvoke呼び出しをキャンセルします.
    public class CreateBoxes : MonoBehaviour {
    
        public GameObject goPrefab;
    
    	void Start () {
            InvokeRepeating ("CreateMoreBox", 1.0f, 1.0f);
    	}
    	
    	void Update () {
            if(Input.GetKeyDown(KeyCode.Space))
            {
                CreateMoreBox();
            }
    
            if (Input.GetKeyDown(KeyCode.Z))
            {
                CancelInvoke();
            }
        }
    
        void CreateMoreBox()
        {
            for(int i = 0; i <= 5; i++)
            {
                Vector3 position = new Vector3(Random.Range(-4.0f, 4.0f), 3, Random.Range(-4.0f, 4.0f));
                GameObject.Instantiate(goPrefab, position, Quaternion.identity);
            }
        }
    }
    
     


  • マネーコピー主役コントロール
  • 主役基本制御
  • Cubeモデルを作成し、主役として美化します.
  • リジッドボディコンポーネントを追加し、リジッドボディのMovePositionを使用してキーと組み合わせて主役の移動を制御します.

  • 主役とBoxの衝突を制御する
  • 主役はBoxに衝突し、Boxは自動的に破壊された.
    public class PlayerController : MonoBehaviour {
    
        private Rigidbody m_Rigidbody;
        private Transform m_Transform;
    
    	void Start () {
            m_Rigidbody = gameObject.GetComponent ();
            m_Transform = gameObject.GetComponent ();
    	}
    	
    	void Update () {
            if(Input.GetKey(KeyCode.W))
            {
                m_Rigidbody.MovePosition(m_Transform.position + Vector3.forward * 0.2f);
            }
    
            if (Input.GetKey(KeyCode.A))
            {
                m_Rigidbody.MovePosition(m_Transform.position + Vector3.left * 0.2f);
            }
    
            if (Input.GetKey(KeyCode.S))
            {
                m_Rigidbody.MovePosition(m_Transform.position + Vector3.back * 0.2f);
            }
    
            if (Input.GetKey(KeyCode.D))
            {
                m_Rigidbody.MovePosition(m_Transform.position + Vector3.right * 0.2f);
            }
        }
    
        void OnCollisionEnter(Collision coll)
        {
            if(coll.gameObject.tag == "Box")
            {
                GameObject.Destroy (coll.gameObject);
            }
        }
    }
    
     


  •