n_Way弾を実装しようとしましたが、コードに誤りがあるのか自爆してしまいます。
Shell
同士が当たって爆発し、その爆発でダメージを喰らっていたみたいなので、Shell
同士の当たり判定を無くしましょう。
「Shell
」レイヤーを作りそれをShell
に設定。
「Edit→ProjectSetting→Physics」からShell
同士のチェックを外してください。
プロジェクトを確認してみたところ、Shell
という名前のレイヤーと当たり判定におけるShell
同士のチェックは外れていたので、レイヤーの設定し忘れかもしれません。
レイヤーを変更したところ自爆はなくなりましたが、
角度を変更して発射することは出来ず、複数個まとめて同じ方向に発射されてしまいました。
色々ソースを漁ったのですが参考にして変更してみるとエラーが出たりまた自爆したりします。
確認してみましたが、今の状態だと別々の角度に発射すること自体ができていませんでした。
弾の発射角度は102行目のshellInstance.velocity = m_CurrentLaunchForce * m_FireTransform.forward;
の部分で設定されているので、m_FireTransform
の角度を調整しなければなりません。
なので、localAngle
の値は m_FireTransform.localEulerAngles
に代入するのがベストでしょう。
また、そのまま代入した場合でも、localAngle
の値が小さいのでほとんど変化がありません(0.4等の値でした)
とりあえず調整をするなら、Mathf.Cos(m_NWay)
に50等の数字をかけてあげると良いと思います。
Tankの子オブジェクトであるFireTransform
オブジェクトの角度を変更してみたらわかりますが、z軸を回転させても発射方向は変わりません。
縦に広げたい場合はlocalAngle.x
を、横に広げたい場合はlocalAngle.y
の値を変更するようにしましょう。
参考程度に、私が編集したFireAngle
メソッドのスクショを貼り付けておきます。
自分なりに理解したら、コピーするなりさらに編集を加えるなりしてください!
また自爆してしまった場合は、もう一度レイヤーが設定されているか確認してください。
修正してみたところ、ちゃんと3-Way弾になりました。ありがとうございます。