私は問題にアプローチだろうが、私は改善のためのいくつかのアイデアを共有し、その後、ご希望のソリューションに固執する方法はありませんストラカン監督、
。
void OnTriggerEnter(Collider col) {
if (col.tag == "Weapon") {
attack(col);
}
}
private void attack(Collider col) {
if (!GameManager.instance.GameOver) {
bulletReturnClone = Instantiate(bulletReturn, transform.position, transform.rotation) as GameObject;
bulletReturnClone.GetComponent<Rigidbody>().velocity = transform.forward * 25f;
// the following line of code should remove the bullet from the shield collider in order to prevent any future problems like spawning multiple bullets or instantly destroying the newly created bullet
bulletReturnClone.GetComponent<Transform>().position *= bulletReturnClone.GetComponent<Rigidbody>().velocity;
Destroy(col.gameObject);
}
}
あなたのトリガー(弾丸)を武器としてタグ付けされている場合は弾丸を破壊し、新しいものをインスタンス化し、それはVelocityの変更によってあなたのシールドポインティングの方向に弾丸を反映してあなたの意図的な目標を達成する必要があり、このコード。それは動作しますが、それはちょっとした開発のようです。あなたが別の観点から問題に近づくと、はるかに良いかもしれません - 盾の弾丸ではありません。
あなたは弾丸です。あなたがしているのは、あなたが撮影された方向に飛ぶことだけです。地形に衝突すると、停止/消滅します。この地形が盾であれば、あなたは停止/消滅しませんが、あなたの方向を変えます(反映されます)。 ...長いストーリーの短い...トリガーコライダーを持つべき人は、盾ではなく弾丸です。弾丸スクリプトのOnTriggerEnter(Collider col)はそれを破壊しますが、col.tag == "Shield"の場合、弾丸はその無駄なインスタンス化と変換をすべて行わずに方向を変更します。 私は第2解決策のコードを書くのが面倒です。あなたは私のポイントを持っている場合は、簡単に書き留めることができるはずです。試行錯誤を通じて学ぶことは、あなたが発展するのに役立ちます(私が怠け者になることを言い訳します)。
bulletReturnプレハブには「武器」タグがありますか? – Woltus
ええ、「武器」のタグを持っています –
あなたの新しい弾は、適切に新しいものを作り出します。弾丸がたくさん出ます。 – Woltus