ある条件になれば、ダメージを食らわず、数秒間だけ無敵状態になるしくみを作ってみましょう。
今回の例では、ボールにぶつかればHPが1減りますが、スペースキーを押すと、3秒間減らなくなります。
結果はコンソールで確認します。
ボールが飛んでくるしくみ
まずはボールが飛んでくる仕組みをつくりましょう。
Sphereを作り、リジッドボディを追加。
Ballという名前でタグをつけます。
Sphereをプレハブにします。
Sphereの元データは削除します。
空のオブジェクトを作成します。
X座標を5に、Z座標を10にします。
BallShot.csを作成し、GameObjectに追加します。
BallShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; float time; void Update() { time -= Time.deltaTime; if(time <= 0.0f) { Shot(); time = 1.0f; } } void Shot() { GameObject ball = GameObject.Instantiate(prefab, this.transform.position, Quaternion.identity)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * -500); } } |
プレハブのフィールドに、Sphereを入れます。
プレーヤーの作成
続いて、プレーヤーをつくります。
Cubeを作成します。
CubeScript.csを作成し、Cubeに追加します。
CubeScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeScript : MonoBehaviour { float speed = 10.0f; int hitPoit; bool isHide; void Start() { hitPoit = 10; } void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, speed*Time.deltaTime, 0f); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, -speed*Time.deltaTime, 0f); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-speed*Time.deltaTime, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(speed*Time.deltaTime, 0f, 0f); } if(Input.GetKeyDown(KeyCode.Space) && !isHide) { StartCoroutine("StartUnrivaled"); } } IEnumerator StartUnrivaled() { isHide = true; yield return new WaitForSeconds(3.0f); isHide = false; } private void OnCollisionEnter(Collision other) { if(other.gameObject.tag == "Ball") { if(!isHide) { hitPoit--; } Destroy(other.gameObject); Debug.Log(hitPoit); } } } |
ゲームプレイして、コンソールを確認しましょう。
ぶつかるとHPが1ずつ減りますが、スペースキーを押せば、3秒間は減らなくなりました。