Unity2D5はしごを登る入門



Getting Started With Unity2d 5 Climbing Ladder



完全なコード

public float climbspeed = 2f private bool inLadder public Collider2D platf private void OnTriggerStay2D(Collider2D collision) { if (collision.tag == 'Player') { if (Input.GetKey(KeyCode.UpArrow)) { collision.SendMessage('setLadder', true) collision.SendMessage('setInLadder', false) inLadder = true collision.GetComponent<Rigidbody2D>().gravityScale = 0 Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[0], platf) Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[1], platf) collision.GetComponent<Rigidbody2D>().velocity = new Vector2(0, climbspeed) } else if (Input.GetKey(KeyCode.DownArrow)) { collision.SendMessage('setLadder', true) collision.SendMessage('setInLadder', false) inLadder = true collision.GetComponent<Rigidbody2D>().gravityScale = 0 Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[0], platf) Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[1], platf) collision.GetComponent<Rigidbody2D>().velocity = new Vector2(0, -climbspeed) } else if (Input.GetKey(KeyCode.Space)) { collision.SendMessage('setInLadder', false) collision.SendMessage('setLadder', false) Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[1], platf, false) Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[0], platf, false) collision.GetComponent<Rigidbody2D>().gravityScale = 1 inLadder = false } else if (inLadder) { collision.GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0) collision.SendMessage('setLadder', false) collision.SendMessage('setInLadder', true) } } } private void OnTriggerExit2D(Collider2D collision) { collision.GetComponent<Rigidbody2D>().gravityScale = 1 collision.SendMessage('setLadder', false) collision.SendMessage('setInLadder', false) inLadder = false Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[1], platf, false) Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[0], platf, false) }

例として登る

if (Input.GetKey(KeyCode.UpArrow)) { collision.SendMessage('setLadder', true) collision.SendMessage('setInLadder', false) inLadder = true collision.GetComponent<Rigidbody2D>().gravityScale = 0 Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[0], platf) Physics2D.IgnoreCollision(collision.GetComponents<Collider2D>()[1], platf) collision.GetComponent<Rigidbody2D>().velocity = new Vector2(0, climbspeed) }

2つのブール変数「setLadder」と「setInLadder」を使用して、はしごの2つのアニメーション(滞在と登山)を制御します。

はしご上のプレーヤーとプラットフォーム間の衝突を無視します
はしごでは、剛体の重量は0で、クロールの上昇速度は固定されています。