示例#1
0
 protected void Start()
 {
     foreach (EffectData effectData in this.GetComponent <Item>().effects)
     {
         if (effectData is EffectShock)
         {
             effectShock = effectData as EffectShock;
             break;
         }
     }
 }
        private void Lightning()
        {
            foreach (Creature npc in Creature.list)
            {
                if (npc != Creature.player && npc.state != Creature.State.Dead)
                {
                    Vector3 targetPosition = npc.ragdoll.GetPart(HumanBodyBones.Chest).transf.position;
                    Vector3 dir            = (contactPoint - targetPosition).normalized;

                    RaycastHit raycastHit;
                    if (Physics.Raycast(contactPoint, dir, out raycastHit, module.hitRadius) && raycastHit.collider.tag != "Player")
                    {
                        Debug.Log(raycastHit.distance);

                        canActivate = false;
                        isActivated = true;

                        LightningFX(targetPosition, npc);

                        if (!npc.ragdoll.effects.Exists(e => e.id.Equals("EscrimaShock")))
                        {
                            EffectShock effectShock = (EffectShock)npc.ragdoll.effects.Find(e => e.id.Equals("Shock"));
                            effectShock.id = "EscrimaShock";
                            effectShock.minConsecutiveHit = 0;
                            npc.ragdoll.effects.Add(effectShock);
                        }

                        CollisionStruct damager = CreateEnemyDamager(raycastHit.collider, dir, targetPosition, raycastHit.normal);
                        npc.health.Damage(ref damager);
                    }
                }
            }

            if (isActivated)
            {
                beamsSound.Play();
                Invoke("StopLightning", module.duration);
            }
        }