前提・実現したいこと
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