【Unity】コルーチンと同様の機能
コルーチンのように、ある一定時間を待たせる機能をコルーチンを使わずに行うことができる。
private float shotWait = 0; private float shotWait = 0.3; void Update () { if(shotWait > 0){ shotWait-= Time.deltaTime; // returnでこのフレームを一旦抜ける return; } // ここに行いたい処理を書く。 }
下のコードと同じ
void Awake (){ StartCoroutine("ganerateCube1"); } IEnumerator generateCube1(){ while(true){ // ここに行いたい処理を書く。 } }
例
using UnityEngine; using System.Collections; public class ShotControl : MonoBehaviour { [SerializeField] private GameObject shot; private float shotWait = 0; public float speed =3000.0f; void Update () { if(shotWait > 0){ shotWait-= Time.deltaTime; // returnでこのフレームを一旦抜ける return; } if(Input.GetMouseButton(0)){ shotWait=0.3f; Vector3 hitPoint; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit, 200)){ if(hit.collider.gameObject == null){ return; } hitPoint = hit.point; }else{ return; } Vector3 point = transform.localPosition; GameObject obj = (GameObject)Instantiate(shot); obj.transform.localPosition = point; Vector3 line = Vector3.Normalize(hitPoint-obj.transform.position); obj.transform.LookAt(hitPoint); obj.transform.rigidbody.AddForce(line * speed); } } }