コード例 #1
0
        void entity_ImpactReceive(MonoBehaviour mono, ImpactHit hit)
        {
            Projectile bullet = hit.attacker.GetComponent <Projectile>();

            if (bullet != null)
            {
                if (state != States.Chase && state != States.Alert)
                {
                    if (state != States.Critical)
                    {
                        state = States.Alert;
                    }
                    disturbancePoint = hit.point;
                    timeSearch       = 0f;
                    targetDir        = (hit.senderPos - transform.position);
                    targetDir.y      = 0;
                }
                currentImpactHit = hit;
                evade            = true;
            }
        }
コード例 #2
0
        void Evade(ImpactHit hit)
        {
            if (evade && disturbancePoint != null)
            {
                timeEvade += Time.deltaTime;
                float phase = Mathf.Sin(timeEvade);
                float dirX  = 0;
                if (phase > 0)
                {
                    dirX = 1;
                }
                else
                {
                    dirX = -1;
                }

                emInputComponent.SetMovement(true, dirX, CoreEnums.Axis2.X);

                float dirY  = 0;
                float angle = Vector3.Angle(gameObject.transform.forward, (disturbancePoint - gameObject.transform.position));
                if (angle > 90)
                {
                    dirY = 1;
                }
                else
                {
                    dirY = -1;
                }

                emInputComponent.SetMovement(true, dirY, CoreEnums.Axis2.Y);
                evadeTimer += Time.deltaTime;
                if (evadeTimer > 5f)
                {
                    evade      = false;
                    evadeTimer = 0;
                }
            }
        }