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呼び出しをキャンセルします.
マネーコピー主役コントロール主役基本制御 Cubeモデルを作成し、主役として美化します. リジッドボディコンポーネントを追加し、リジッドボディのMovePositionを使用してキーと組み合わせて主役の移動を制御します.
主役とBoxの衝突を制御する 主役はBoxに衝突し、Boxは自動的に破壊された.
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);
}
}
}
マネーコピー主役コントロール
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);
}
}
}