Esempio n. 1
0
 void OnDetonate(DetonateMessageData messageData)
 {
     if (enabled && SpawnOnDetonation)
     {
         SpawnObjects();
     }
 }
Esempio n. 2
0
    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;
    }
Esempio n. 3
0
    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;
    }
Esempio n. 4
0
 void OnDetonate(DetonateMessageData messageData)
 {
     if (enabled && FadeOnDetonation)
     {
         BeginFadeout();
     }
 }
Esempio n. 5
0
 void OnDetonate(DetonateMessageData messageData)
 {
     if (enabled && ShootOnDetonation)
     {
         StartShooting();
     }
 }
Esempio n. 6
0
    void OnDetonate(DetonateMessageData messageData)
    {
        if (!enabled || IsDestroyed)
        {
            return;
        }

        Explode(messageData.Position);
    }
Esempio n. 7
0
    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;
        }
    }
Esempio n. 8
0
    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;
        }
    }