私は2つのボールを衝突させて破壊し、別のボールをその場所に(好ましくは特定の速度で)発動させたいと考えています。しかし、私がボールにスクリプトを添付しようとすると、ボールの両方のインスタンスが接触すると破棄され、すぐにボールの2つのプレハブが生成されます。これにより、両方のボールが互いに出現し、互いに破壊することが繰り返されます。私はボールにこのスクリプトを添付しました:Unity - 同じGameObjectのうちの2つを衝突させ、お互いを破壊し、目標位置に新しいGameObjectをスポーンする方法?
private Vector3 ballPosition;
void OnTriggerEnter2D (Collider2D other) {
if (other.gameObject.tag == "Ball") {
ballPosition = new Vector3 ((transform.position.x + other.transform.position.x)/2, (transform.position.y + other.transform.position.y)/2, 0.0f);
StartCoroutine ("RespawnBall");
}
}
IEnumerator RespawnBall() {
Instantiate (gameObject, ballPosition, Quaternion.identity);
Destroy (gameObject);
yield return null;
}
は、どのように私は、このコードは、両方のボールを破壊作るのですか、その後、プレハブのインスタンスを1つだけ出現しますか?
これは、Unity /ゲームプログラミングの絶対的な基本です。あなたは単に「他のものを破壊する」ことができます。それはそれを「破壊する」ことを止めるでしょう。 Unityでは、物理ループ内で破壊することはできないので、ブール値を設定するだけです。異なるシステムでは、破壊するか、スクリプトを無効にするか、またはブール値を設定するだけです。 Karduxは正しい基本的な答えを出しました。 – Fattie
Yojが引き起こす別の問題は、一般的にUnityで「タグ」のものを使用しないということです。本当にこの段階では、物理学のために**レイヤー**システムを利用する必要があります。あなたはそれがないと、自明なUnityプロジェクトを行うことはできません。 (Unityのようないくつかの状況があります:彼らはユニティで最初のカップルの日に新しい学習者を獲得する "hello world"システムを作りようとしますが、それは本当に助けになりません。レイヤーコンセプト、最初からそれを使用することもできます) – Fattie
@JoeBlow、これまでのところ私の最初のプロジェクトです。チュートリアルの後で、タグを使ってこれを行う方法を学びました。 。レイヤーを扱う良いチュートリアルをお勧めしますか? – YojaX