前提・実現したいこと
プレイヤーと敵との距離を測定し、プレイヤーが一定距離近づいた時にのみ銃弾を発射するように設定したい。
発生している問題・エラーメッセージ
プレイヤー(Player)と敵(Enemy)との距離(distance)がスクリプトに表示した50.0f以内となった場合にも銃弾(EnemyBullet)は発生しなかった。
エラーメッセージ
特になし
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class EnemyBulletGenerator: MonoBehaviour 6{ 7 public GameObject EnemyBulletPrefab; 8 float span = 1.0f; 9 float delta = 0; 10 private const float V = -5.0f; 11 private const float W = -5.0f; 12 public Transform Enemy; 13 private GameObject mGameObject; 14 public Transform Player; 15 16 private void Awake() 17 { 18 mGameObject = GameObject.Find("Enemy"); 19 } 20 void Update() 21 { 22 Vector3 targetPos = Player.position; 23 Vector3 EnemyPos = Enemy.position; 24 float distance = Vector3.Distance(Enemy.position, Player.position); 25 if (distance < 50.0f) 26 { 27 if (mGameObject != null) 28 { 29 float Enemylong = Enemy.position.x + V; 30 float Enemyheight = Enemy.position.y + W; 31 this.delta += Time.deltaTime; 32 if (this.delta > this.span) 33 { 34 this.delta = 0; 35 GameObject go = Instantiate(EnemyBulletPrefab, new Vector3(Enemylong, Enemyheight, 0.0f), Quaternion.identity); 36 } 37 } 38 } 39 } 40}
試したこと
コードの誤りだと思い、部分的にコードを削除したりして効果を確かめた。しかし結局銃弾が発生することはなかった。またネットで距離の測定の方法を模索したが、これ以外の方法はよくわからなかった。
補足情報(FW/ツールのバージョンなど)
Unity Personal 2019.2.14f1
if (this.delta > this.span) の中に入っていますか?
Debug.Logで確かめていますか?
あと、今のコードでは50fに1秒間居続けないと弾は発射されませんが、すぐに出たりしていませんか?
回答1件
あなたの回答
tips
プレビュー