Unityで開発しているアプリケーションにて以下のバグが発生しています。原因がよくわかっておりません。どのように対応すればよいでしょうか。
実現したいこと:
キャラクタの正面方向にprefab(frameBall)を生成。
FrameBallは生成後に、生成時のキャラクタの正面方向に一定時間直進する。
発生しているバグ:
frameBallオブジェクトがキャラクタの正面方向に飛ばない
//キャラクタオブジェクトのスクリプト、インスタンス生成部 public void MagicAttack(){ GameObject obj = (GameObject)Resources.Load("frameBall"); Vector3 offset = new Vector3(0,1,0); GameObject fireShot = Instantiate(obj, transform.position + offset + transform.forward * 1, transform.rotation); fireShot.GetComponent<FrameBall>().Init(transform.forward); } //frameBallのスクリプト、初期化とUpdate関数 public void Init(Vector3 _dir){ dir = _dir; } void Update() { transform.Translate(dir * speed * Time.deltaTime); currentTime += Time.deltaTime; if(currentTime > lifeTime){ Destroy(gameObject); } }
transform.forwardで正面方向の単位ベクトルが取得できると思ったのですが、なにか間違えていますでしょうか。
コードを見る限りでは、ちゃんとキャラクタオブジェクトのforward方向に飛びそうに見えるんですがね...
可能性としては、キャラクタオブジェクトの構造の都合で、オブジェクトの見た目上の前方と真の前方が異なっている...とかでしょうかね。Initの引数に与えているtransform.forwardが本当にキャラクタオブジェクトの前方を指しているかはご確認済みでしょうか?
[追記]
すみません、S.Percentageさんのおっしゃる点を見落としておりました。あちらのご指摘が原因として的確そうですね。
オブジェクトと変更してみても同じ方向に飛んでいきました・・・
>Initの引数に与えているtransform.forwardが本当にキャラクタオブジェクトの前方を指しているかはご確認済みでしょうか?
確認しました、問題なかったです。
回答2件
あなたの回答
tips
プレビュー