Наследование: DropEvent
Пример #1
0
 private static void ScreenShake(Vector3 origin, AmmoEvent ammoEvent)
 {
     foreach (var collider in  Physics.OverlapSphere(origin, ammoEvent.range))
     {
         collider.SendMessage("ScreenShake", Vector3.Magnitude(origin - collider.transform.position) * ammoEvent.power, SendMessageOptions.DontRequireReceiver);
     }
 }
Пример #2
0
 private static void Explosion(Vector3 origin, AmmoEvent ammoEvent)
 {
     foreach (var collider in  Physics.OverlapSphere(origin, ammoEvent.range))
     {
         collider.SendMessage("Explosion", SendMessageOptions.DontRequireReceiver);
     }
 }
Пример #3
0
 private static void DealDamage(Vector3 origin, AmmoEvent ammoEvent)
 {
     foreach (var collider in Physics.OverlapSphere(origin, ammoEvent.range))
     {
         collider.SendMessage("DealDamage", ammoEvent.power);
     }
 }
Пример #4
0
    public static void UseEvent(Vector3 origin, AmmoEvent ammoEvent)
    {
        switch (ammoEvent.action)
        {
        case Action.Damage:
            DealDamage(origin, ammoEvent);
            break;

        case Action.PushBack:
            PushBack(origin, ammoEvent);
            break;

        case Action.PullIn:
            PullIn(origin, ammoEvent);
            break;

        case Action.Explosion:
            break;

        case Action.ScreenShake:
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Пример #5
0
 private static void PullIn(Vector3 origin, AmmoEvent ammoEvent)
 {
     foreach (var collider in  Physics.OverlapSphere(origin, ammoEvent.range))
     {
         if (collider.GetComponent <Rigidbody>())
         {
             collider.transform.GetComponent <Rigidbody>().AddForce((collider.transform.position - origin).normalized * ammoEvent.power * -1);
         }
     }
 }
Пример #6
0
 private static void PushBack(Vector3 origin, AmmoEvent ammoEvent)
 {
     foreach (var collider in  Physics.OverlapSphere(origin, ammoEvent.range))
     {
         if (collider.GetComponent <Rigidbody>())
         {
             collider.SendMessage("Explosion", SendMessageOptions.DontRequireReceiver);
             Vector3 distance = collider.transform.position - origin;
             collider.transform.GetComponent <Rigidbody>().AddForce((ammoEvent.range - distance.magnitude) * ammoEvent.power * (distance.normalized + Vector3.up * 0.4f));
         }
     }
 }
Пример #7
0
        public static void EventHandler(string script)
        {
            var e = new AmmoEvent(script);

            switch (script)
            {
            case BEFORE_RELOAD:    BeforeReloadAmmo(e); break;

            case AFTER_RELOAD:     AfterReloadAmmo(e); break;

            default: break;
            }
        }