0
2dプラットフォームゲームをコーディングしています。ゲームでは、味方と敵が互いに向かって歩いています。彼らがお互いに衝突すると、自分自身のタイマースクリプトがカウントダウンを開始し、その時間までに健康状態が期間として減少します。キャラクターのヘルスがゼロに等しい場合、私はそのゲームオブジェクトを破壊する。私は、お互いに衝突しているかどうかを検出するために、各キャラクターにブーリアンを追加します。両方のゲームオブジェクトを衝突させながら、がを破壊すると、他の衝突ゲームオブジェクトは依然として衝突するが、衝突オブジェクトは存在しない。これはちょうど他の衝突オブジェクトが破壊されて起こります。他のゲームオブジェクトが破壊された場合、Unity 2Dの衝突は停止しません
public float setSpeed;
public bool enemyColliding;
float speed;
void Start() {
}
// Update is called once per frame
void Update() {
speed= setSpeed;
GetComponent<Rigidbody2D>().velocity = new Vector2 (speed,GetComponent<Rigidbody2D>().velocity.y);
if (enemyColliding) {
attackAnimation();
}
else
{
walkAnimation();
}
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "dusman" /*enemy*/) {
enemyColliding= true;
}
}
void OnTriggerExit2D(Collider2D coll)
{
if (coll.gameObject.tag=="dusman" /*enemy*/) {
enemyColliding= false;
}
}
void attackAnimation()
{
Animator animator = this.gameObject.GetComponent<Animator>();
animator.runtimeAnimatorController = Resources.Load ("AllyWr2AttackAnim") as RuntimeAnimatorController;
}
void walkAnimation()
{
Animator animator = this.gameObject.GetComponent<Animator>();
animator.runtimeAnimatorController = Resources.Load ("AllyWr2WalkAnim") as RuntimeAnimatorController;
}
すべてのヘルプ...
感謝をしてみてください。 1つ以上の異なるゲームオブジェクトが存在します。私はそれを行うと他を検出します。 –
右の場合、hp <0のgameobjectを削除すると、衝突し、OnTriggerExit2Dが呼び出されませんでした。 OnTriggerExit2Dを削除してcollを呼び出すとnullになります。これをチェックして。その真実なら、if文で使うことができます –
別の方法はgamefieldの外でgamefieldの位置をgamefieldの外に変更して削除することです。ハック) –