Esempio n. 1
0
        public void ApplyDamage(float damage, GameObject sender = null, bool stagger = false)
        {
            baseSettings.health -= damage;
            EnableHitGUI(true);
            if (sender != null)
            {
                memory.lastDamager = sender;
                if (GetComponent <BehaviorDesigner.Runtime.BehaviorTree>())
                {
                    BehaviorDesigner.Runtime.SharedGameObject lastSender         = (BehaviorDesigner.Runtime.SharedGameObject)sender;
                    BehaviorDesigner.Runtime.SharedVector3    lastSenderPosition = (BehaviorDesigner.Runtime.SharedVector3)sender.transform.position;
                    GetComponent <BehaviorDesigner.Runtime.BehaviorTree>().SetVariable("target", lastSender);
                    GetComponent <BehaviorDesigner.Runtime.BehaviorTree>().SetVariable("last_target_position", lastSenderPosition);
                    GetComponent <BehaviorDesigner.Runtime.BehaviorTree>().SendEvent("Damaged");
                }
//                float dir = GetDirection(sender);
            }
            StartCoroutine(PlaySound(SoundType.loss));
            if (baseSettings.health <= 0)
            {
                baseSettings.health = 0;
                Death();
            }
            baseSettings.OnDamaged.Invoke();
        }
Esempio n. 2
0
        public void CallTarget(Vector3 lastPosition)
        {
            currentTime = Time.time;
            if (lastTime != currentTime)
            {
                if ((currentTime - lastTime) < attackInfo.notifyCooldown)
                {
                    currentTime = lastTime;
                    return;
                }
                currentTime = lastTime;
            }
            BehaviorDesigner.Runtime.SharedVector3 pos = (BehaviorDesigner.Runtime.SharedVector3)lastPosition;
            Collider[] hits = Physics.OverlapSphere(this.transform.position, attackInfo.notifyDistance, attackInfo.notifyLayers);

            foreach (Collider hit in hits)
            {
                if (hit.transform.root.GetComponent <BehaviorDesigner.Runtime.BehaviorTree>())
                {
                    hit.transform.root.GetComponent <BehaviorDesigner.Runtime.BehaviorTree>().SetVariable("last_target_position", pos);
                    hit.transform.root.GetComponent <BehaviorDesigner.Runtime.BehaviorTree>().SendEvent(attackInfo.callEvent);
                }
            }
        }