前提・実現したいこと
unityで2Dシューティングゲームを作っています.
敵が弾を打った時に、自分がいた場所に飛んでくるようにしたのですがそこで止まってしまいます。
その弾をその線上で進み続けるようにしたいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。
敵が弾を打った時に、自分がいた場所に飛んでくるようにしたのですが弾が自分のいた場所で止まってしまいます。
該当のソースコード
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Enemybullet : MonoBehaviour 6{ 7 GameObject Player; 8 GameObject Enemy; 9 10 public float speed = 3.0f; // 移動スピード] 11 12 public Vector3 PlayerPos { get; private set; } 13 14 // Start is called before the first frame update 15 void Start() 16 { 17 // playerオブジェクトを取得 18 this.Player = GameObject.Find("Player"); 19 this.Enemy = GameObject.Find("Enemy"); 20 21 Destroy(gameObject, 3.0f); 22 //Vector3 PlayerPos = this.Player.transform.position; 23 PlayerPos = this.Player.transform.position; 24 25 } 26 27 // Update is called once per frame 28 void Update() 29 { 30 31 // float step = speed * Time.deltaTime; 32 //Enemybullet.transform.position = Vector3.MoveTowards(Enemybullet.transform.position, Player.transform.position,step); 33 34 float ENEMY_MOVE_SPEED = 0.05f; 35 36 // プレイヤーの方向に移動させる 37 transform.position = Vector3.MoveTowards(transform.position, PlayerPos, ENEMY_MOVE_SPEED); 38 39 } 40} 41 42 43 44### 試したこと 45 46Movetowardsだとその場所にいくコードだと思うのですが、代わりに何か使うのでしょうか? 47 48### 補足情報(FW/ツールのバージョンなど) 49unity2019.2.19
ぱっと見このコードでも動くように思います。
・エラーは出ていませんか?
・Startの最終行に Debug.Log(PlayerPos); とやるとPlayerPosがコンソールに表示されます。
そこの値は正しいですか?(transform.positionと合致していませんか?)
質問は「弾を撃った時に弾がプレイヤーのいた場所まで移動後、プレイヤーのいた位置で止まってしまう(その先に移動しない)」という意味ですかね? もしそうなら既に付いている回答を参照してください。
上記は「弾の生成位置で止まる(動かない)」と読んでしまった為のものですので、そうでないならばスルー頂いて構いません。
(出来れば「そこで」とか「自分」とか抽象的な表現はやめて頂けると助かります)
自分の伝え方が抽象的過ぎました...
ご指摘ありがとうございます。
回答2件
あなたの回答
tips
プレビュー