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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Unity3D

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

Q&A

解決済

1回答

3480閲覧

unityのヒットエフェクトに関する質問です。

HoD4uKcWkhTkTAj

総合スコア7

Unity3D

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

0グッド

0クリップ

投稿2016/07/22 07:51

編集2016/07/22 08:28

###前提・実現したいこと
unity初心者ながら失礼します。
unity scriptで、戦車ゲームを作成しており、自身の撃った砲弾が着弾した地点にヒットエフェクトを発生させたいと思っております。

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

しかし、実際は砲弾が当たっても跳ね返るのみで、ヒットエフェクトどころか自身の削除も出来ていない体たらく。 どなたか助言いただけないでしょうか。

###該当のソースコード

C#

1using UnityEngine; 2using System.Collections; 3public class BalletryTurn: MonoBehaviour { 4 5 public Transform Player; 6 public GameObject Muzzle1; 7 public GameObject Muzzle2; 8 public GameObject Exprode; 9 public float ReactionRange; 10 public float TurnSpeed; 11 public int _HP; 12 public static Vector3 Direction; 13 public static float dis; 14 public float EShotFlame; 15 private float EShotTime1; 16 // Use this for initialization 17 void Start () { 18 Player = GameObject.FindGameObjectWithTag("Player").transform; 19 Muzzle1 = GameObject.Find("Muzzle1"); 20 Muzzle2 = GameObject.Find("Muzzle2"); 21 } 22 23 // Update is called once per frame 24 void Update () { 25 EShotTime1 += Time.deltaTime;//砲弾射撃レート 26 27 EnemyShot enemyshot1=Muzzle1.GetComponent<EnemyShot>();//射撃メソッド取り込み 28 EnemyShot enemyshot2 = Muzzle2.GetComponent<EnemyShot>(); 29 Direction=Player.transform.position-transform.position;//回転方向計算 30 var rotation=Quaternion.LookRotation(Direction); 31 32 Vector3 PlayerPos = Player.position; 33 dis = Vector3.Distance(PlayerPos, transform.position); 34; 35 rotation.x = rotation.z = 0;//Y軸方向のみ回転させる 36 if (dis < ReactionRange)//一定範囲内にプレイヤーが近づいたら 37 { 38 transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * TurnSpeed);//砲台回転処理 39 if(EShotTime1>EShotFlame)//射撃 40 { 41 enemyshot1.EShot(Muzzle1.transform); 42 enemyshot2.EShot( Muzzle2.transform); 43 EShotTime1=0; 44 } 45 46 } 47 48 49 50 51 } 52 void Hit(Collider col)//弾がヒットしたら 53 { 54 if (col.gameObject.tag == "NShell")//ノーマル弾 55 { 56 57 _HP -= 3; 58 Destroy(col.gameObject); 59 if (_HP <= 0) 60 { 61 Instantiate(Exprode, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); 62 Destroy(this.gameObject); 63 } 64 } 65 if(col.gameObject.tag=="FShell")//火炎弾 66 { 67 _HP -= 2; 68 Destroy(col.gameObject); 69 if (_HP <= 0) 70 { 71 Instantiate(Exprode, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); 72 Destroy(this.gameObject); 73 } 74 } 75 if(col.gameObject.tag=="AShell")//水弾 76 { 77 _HP -= 5; 78 Destroy(col.gameObject); 79 if (_HP <= 0) 80 { 81 Instantiate(Exprode, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); 82 Destroy(this.gameObject); 83 } 84 } 85 } 86}

###試したこと
砲弾本体に実装すべきかどうか等も検討しましたが、こちらも上手くいきませんでした。
Updateに_HPが0以下になった場合も試しましたがこれもダメでした。

###補足情報(言語/FW/ツール等のバージョンなど)
visual studioを使用
ソースコードはヒット目標物に当てています。

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

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

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

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

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

urahimono

2016/07/22 08:00

一つ質問させてください。 記載いただいたソースコードは、「戦車「砲弾」「ヒット目標物」「ヒットエフェクト」「その他」の中でどのオブジェクトについていますでしょうか。 恐らく戦車だとは思いますが。
HoD4uKcWkhTkTAj

2016/07/22 08:03

申し訳ない、こちらのソースコードは「ヒット目標物」に組み込んでいます。
urahimono

2016/07/22 08:34

もう一つ質問させてください。 BalletryTurnのHit()関数はどのスクリプトがどんな形で呼んでいるのでしょうか。
HoD4uKcWkhTkTAj

2016/07/22 09:06

元々は地面に着弾した弾を自動で消去するDestory wall というscriptを参考にして書いたもので、着弾したら自動で呼び出されると思っていたのですが・・・もしかして違うのでしょうか?
guest

回答1

0

ベストアンサー

Start()Update()のようにUnity側で呼ばれるイベントの中にコリジョンに当たった際に呼ばれるイベントがあります。

コリジョンが当たった際に呼ばれるイベント
OnCollisionEnter
トリガーが当たった際に呼ばれるイベント
OnTriggerEnter

上記の関数を扱う際は以下の質問の内容に気をつけてください。
【Unity】オブジェクトにつけたパーティクルをスクリプトから制御したい

コリジョンが当たった際の関数は、関数の名前や引数の型が正しくないと自動では呼ばれないのでお気をつけください。
Hit()の関数を上記のものに変えて一度試していただけませんでしょうか。

投稿2016/07/22 09:14

urahimono

総合スコア714

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

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

HoD4uKcWkhTkTAj

2016/07/22 09:32

OnTCollisionEnterに変更した上でforeach関数も取り込んでみたところ成功しました。 大変お世話になりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問