void OnDetonate(DetonateMessageData messageData) { if (enabled && SpawnOnDetonation) { SpawnObjects(); } }
void FixedUpdate() { if (!enabled || IsDetonated || rigidbody2D == null) { return; } float curVelocityMag = rigidbody2D.velocity.magnitude; float velChange = curVelocityMag - prevVelocityMag; if (DetonateOnlyOnSlowdown && velChange >= 0) { return; } float accel = Mathf.Abs(velChange) / Time.fixedDeltaTime; if (accel > CriticalAcceleration) { var messageData = new DetonateMessageData(transform.position, this); BroadcastMessage(DetonateMessageData.MessageName, messageData, SendMessageOptions.DontRequireReceiver); IsDetonated = true; } prevVelocityMag = curVelocityMag; }
private void ProcessCollision(Collision2D collision) { if (!enabled || IsDetonated) { return; } Vector2 detonationPos; if (DetonateAt == DetonationPosition.CollisionPoint) { var farthestContact = collision.contacts .WithMax(c => Common.DistanceSq(c.point, transform.position)); detonationPos = farthestContact.point; } else { detonationPos = transform.position; } var messageData = new DetonateMessageData(detonationPos, this); BroadcastMessage(DetonateMessageData.MessageName, messageData, SendMessageOptions.DontRequireReceiver); IsDetonated = true; }
void OnDetonate(DetonateMessageData messageData) { if (enabled && FadeOnDetonation) { BeginFadeout(); } }
void OnDetonate(DetonateMessageData messageData) { if (enabled && ShootOnDetonation) { StartShooting(); } }
void OnDetonate(DetonateMessageData messageData) { if (!enabled || IsDestroyed) { return; } Explode(messageData.Position); }
private void ProcessDetonationDelay() { float timeElapsed = Time.fixedTime - detonationMessageTimestamp; if (timeElapsed >= DetonationDelay) { var messageData = new DetonateMessageData(transform.position, this); BroadcastMessage(DetonateMessageData.MessageName, messageData, SendMessageOptions.DontRequireReceiver); IsDetonated = true; } }
void FixedUpdate() { if (!isFixedStarted) { FixedStart(); isFixedStarted = true; } if (IsDetonated) { return; } if (TimeElapsed >= InstanceDelay) { var messageData = new DetonateMessageData(transform.position, this); BroadcastMessage(DetonateMessageData.MessageName, messageData, SendMessageOptions.DontRequireReceiver); IsDetonated = true; } }