03 playerの移動の基本
今回は自動で移動を目指す
Player_Move.cs を用意
とりあえず、右に移動させるスクリプトを用意
public class Player_Move : MonoBehaviour{ public float speed = 3.0f; //移動speed void Update(){ //右移動 transform.position += transform.right * speed * Time.deltaTime; } }
スクリプトをPlayer_mainにアタッチ
右に移動しましたが、ずーっと右に移動して画面外へ移動してしまいます…
Wall_Rとの接触判定をしたい
壁にtagを設定
Player_mainの子供にPlayer_collisionを追加。
Player.cs を新規に作ってPlayer_collisionにアタッチ
ここで、右の壁に接触したかを判定する
public class Player : MonoBehaviour{ public bool isWallHit_R; //wall hit flag void Start(){ isWallHit_R = false;//初期化 } //他のオブジェクトとの当たり判定 void OnTriggerEnter( Collider other) { if(other.tag == "Wall_R"){ isWallHit_R = true; } } }
Player_Move.cs に追記
player.csで判定したflagを取得して、移動切り替えのの判定に利用する
public class Player_Move : MonoBehaviour{ private Player childScript; //Player.csスクリプトを入れる用 public float speed = 3.0f; //移動speed void Start(){ //下の階層のオブジェクトにアタッチしている(Player.cs)を参照 childScript = GetComponentInChildren<Player>(); } void Update(){ //右の壁に接触したら if(childScript.isWallHit_R == true){ //左移動 transform.position -= transform.right * speed * Time.deltaTime; } } }
判定できるようになった
これで右の壁に接触すると左に移動できるようになった