質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1725閲覧

敵との距離が一定に達した際に、銃弾を生成したい

Neet-Saikou

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/01/17 12:29

前提・実現したいこと

プレイヤーと敵との距離を測定し、プレイヤーが一定距離近づいた時にのみ銃弾を発射するように設定したい。

発生している問題・エラーメッセージ

プレイヤー(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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izmktr

2020/01/17 16:57

if (this.delta > this.span) の中に入っていますか? Debug.Logで確かめていますか? あと、今のコードでは50fに1秒間居続けないと弾は発射されませんが、すぐに出たりしていませんか?
guest

回答1

0

自己解決

たまたまif(Distance < 150.0f)に変えてみた結果、うまくいきました。失礼致しました。しかし依然として原因は不明なので、わかる方いましたら教えていただけると幸いです。

投稿2020/01/17 18:45

Neet-Saikou

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問