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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

2回答

1229閲覧

敵がplayerの初期スポーン地点に集まってくる。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

1クリップ

投稿2018/04/15 01:39

編集2018/04/15 01:44

今、unityでゲームを作っていて、生成された敵が自分のことを追いかけるようにしたいのですが、うまくいきません。スクリプトは、

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.AI; 5 6public class Enemy_move : MonoBehaviour { 7 8 private Animator animator; 9 private bool aruku=true; 10 private NavMeshAgent agent; 11 public Transform playerTransform;//ここにはプレハブ化したplayerを入れています。 12 [SerializeField] 13 private GameObject player;//ここも同様です。 14 public float ani_speed=1f; 15 16 void Start () 17 { 18 animator = GetComponent<Animator>(); 19 agent = GetComponent<NavMeshAgent>(); 20 animator.SetFloat(name: "speed", value: ani_speed); 21 } 22 23 void OnTriggerStay(Collider other) 24 { 25 if (other.tag=="Player") 26 { 27 aruku = false; 28 } 29 } 30 31 void OnTriggerExit(Collider other) 32 { 33 if (other.tag == "Player") 34 { 35 aruku = true; 36 } 37 } 38 39 public void SetState(bool aruku) 40 { 41 if (aruku == true) 42 { 43 ani_speed = 1f; 44 animator.SetFloat("speed", ani_speed); 45 agent.destination = player.transform.position; 46 if(agent.isStopped == true){ 47 agent.isStopped = false; 48 } 49 } 50 else 51 { 52 ani_speed = 0f; 53 animator.SetFloat("speed", ani_speed); 54 if(agent.isStopped == false){ 55 agent.isStopped = true; 56 } 57 } 58 } 59 void Update() 60 { 61 SetState(aruku: aruku); 62 } 63}

これが敵が追いかけてくるもので、

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Tekiseisei : MonoBehaviour { 6 [SerializeField] 7 private GameObject teki; 8 private Vector3 hassei; 9 private float seconds; 10 // Use this for initialization 11 void Start () { 12 hassei = transform.position; 13 hassei.z -= 4; 14 seconds = 0f; 15 } 16 17 // Update is called once per frame 18 void Update () { 19 seconds += Time.deltaTime; 20 if (seconds >= 7) { 21 GameObject tekis = GameObject.Instantiate(teki) as GameObject; 22 tekis.transform.position = hassei; 23 seconds = 0f; 24 } 25 } 26}

これが敵の生成に使う物です。よろしくお願いします。

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

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

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

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

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

y_waiwai

2018/04/15 01:47

現状でどういう動作をするのかを書いてください。うまくいかない、だけではわかりません
退会済みユーザー

退会済みユーザー

2018/04/15 01:51

すみません。恐らく、プレハブ化したplayerのプレハブの座標を目標地点にしているのだと思います。
guest

回答2

0

ベストアンサー

Prefabから動的に生成するオブジェクトの場合、インスペクターで他のオブジェクトを指定することができないようです。

Enemy_move クラスを以下のように編集して、タグでプレイヤーを見つけるようにしてみてください。

C#

1public class Enemy_move : MonoBehaviour { 2 3 private GameObject player; 4 private Transform playerTransform; 5 6 void Start () 7 { 8 // プレイヤーオブジェクトには Player タグを付けておく 9 player = GameObject.FindWithTag("Player"); 10 11 playerTransform = player.transform; 12 }

投稿2018/04/17 14:49

negitama

総合スコア943

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

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

退会済みユーザー

退会済みユーザー

2018/04/18 06:28

分かりやすい説明ありがとうございます! 試してみたらうまくいきました。
guest

0

解決したかどうかは分かりませんが、一応回答します。

C#

1 public Transform playerTransform;//ここにはプレハブ化したplayerを入れています。 2 [SerializeField] 3 private GameObject player;//ここも同様です。

ここにプレハブではなく、Instantiate()で生成したゲームオブジェクトを入れてください。

投稿2018/04/15 04:44

fiveHundred

総合スコア9803

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問