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; } }
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; } } }