2017-08-26 5 views
0

私は銃で2次元キャラクターを持っています。そして、そのショットが何か他のものと衝突するところで爆発を起こしたいと思います。Unity Raycast2Dは1ユニットのようにしか発射しません。

私はこれを行うための最良の方法は、JavaScriptのRaycast2Dだろうと思った。

var hit: RaycastHit2D = Physics2D.Raycast(transform.position, Vector2.right); 
if (hit.collider != null){ 
    boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity); 
} 

今の問題は、私の火災で、爆発が何も存在しない場合でも、常に私の文字の前で1つのユニットのようにインスタンス化します。なぜ私は考えていない。

+0

*「何も存在しない場合でも、私のキャラクターの前に常に1ユニットが好きです」*これ以上説明できますか?たぶんあなたが話していることのスクリーンショット... – Programmer

+0

これは次のようになります:CHARACTER___________ _______________ ENEMY – helpme

+0

それは敵にインスタンス化されません、それは文字の前に少数のユニットをインスタンス化します – helpme

答えて

2

レイキャストの起源を変更する必要があります。または、新しいレイヤーを作成することもできます。レイキャスト時にそのレイヤーを除外します。

4

最大の問題はではないことです。では、レイ・キャストが何かをインスタンス化する前にどのオブジェクトがヒットしたかを調べることさえあります。これは間違っています。レイキャストは、その前の何かを打つことができます。コライダー2Dのもの。キャラクター自体にも当てはまることがあります。

「敵」タグを作成する敵をそのタグに入れてください。レイキャストがnullでない場合、何かをインスタンス化する前に敵が実際にヒットしていることを確認してください。

if (hit.collider != null) 
{ 
    if (hit.collider.CompareTag("Enemy")) 
    { 
     boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity); 
    } 
} 

私は2Dのレイキャストが行われたときにレイキャストでも、特に自分自身を打つことができ、言ったように。この問題を解決する方法については、this投稿を参照してください。

関連する問題