前提・実現したいこと
unity初心者です。
unity2Dにて「プレハブをInstantiateで生成し動かす」を実装中に問題に遭遇しました。
以下のソースコードによってプレハブから生成されたentityが左に動くはずですが、動きません。
該当のソースコード
キー入力を処理するPlayerController、entity本体となるPlayerの二種類のファイルに別れて記述しています。
PlayerControllerはempty gameObjectとして生成し以下スクリプトをアタッチしています。
playerはAssets/Resourceフォルダ内のプレハブから作成されます。
- キー入力を処理する側
public class PlayerController : MonoBehaviour { pivate GameObject player; void Start(){ player = (GameObject)Resources.Load ("Player"); Instantiate (player, new Vector3(0,0,0), Quaternion.identity); } void Update () { player.GetComponent<Player>().moveLeft(); } }
- entity側
public class Player : MonoBehaviour { public void moveLeft(){ transform.Translate(new Vector2(-0.1f,0.0f)); } }
とりあえず、Debug.Logで座標を出力してみたりした所、どうもPlayerスクリプト内から参照する座標の値とPlayerControllerでplayer.GetComponent<Player>()によって取得したスクリプトの参照する値が異なるようでした。
試したこと
- PlayerのUpdate関数内に直接Translateを記述してみる
普通に動きました。 - moveLeftがちゃんと呼ばれてるかの確認
ログを出して確認しました
回答1件
あなたの回答
tips
プレビュー
2020/12/21 16:23