public override Type Tick()
{
if (!_rangedEnemy._target || _rangedEnemy.CheckObstacles(_rangedEnemy._target))
{
if (_rangedEnemy.patrolling)
{
_rangedEnemy.animator.SetTrigger("Walk");
return(typeof(PatrolState));
}
else
{
_rangedEnemy.animator.SetTrigger("Idle");
return(typeof(WatchState));
}
}
float distance = Vector2.Distance(transform.position, _rangedEnemy._target.transform.position);
if (_rangedEnemy.melee && distance > _rangedEnemy.meleeAttackRange)
{
_rangedEnemy.animator.SetTrigger("Walk");
return(typeof(ChaseState));
}
//katsoo pelaajaa kohti
Vector3 vectorToTarget = _rangedEnemy._target.transform.position - _rangedEnemy.eyes.transform.position;
Vector3 gunVector = _rangedEnemy._target.transform.position - _rangedEnemy.gunRotator.transform.position;
float angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg;
float gunAngle = Mathf.Atan2(gunVector.y, gunVector.x) * Mathf.Rad2Deg;
Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward);
Quaternion q2 = Quaternion.AngleAxis(gunAngle, Vector3.forward);
_rangedEnemy.eyes.transform.rotation = Quaternion.Slerp(_rangedEnemy.eyes.transform.rotation, q, Time.deltaTime * 100);
_rangedEnemy.gunRotator.transform.rotation = Quaternion.Slerp(_rangedEnemy.gunRotator.transform.rotation, q2, Time.deltaTime * 100);
//kääntää vihollisen kohti pelaajaa
if (_rangedEnemy._target.transform.position.x < _rangedEnemy.transform.position.x)
{
_rangedEnemy.transform.rotation = Quaternion.Euler(0, 180, 0);
}
else
{
_rangedEnemy.transform.rotation = Quaternion.Euler(0, 0, 0);
}
if (_rangedEnemy == null)
{
if (_rangedEnemy.patrolling)
{
_rangedEnemy.animator.SetTrigger("Walk");
return(typeof(PatrolState));
}
else
{
_rangedEnemy.animator.SetTrigger("Idle");
return(typeof(WatchState));
}
}
// _attackCooldown -= Time.deltaTime;
if (_rangedEnemy.melee)
{
_rangedEnemy.firstMelee -= Time.deltaTime;
if (_rangedEnemy.firstMelee < 0)
{
_rangedEnemy.Attack(_rangedEnemy._target);
_rangedEnemy.firstMelee = _rangedEnemy.meleeCD;
}
}
else
{
_rangedEnemy.firstShot -= Time.deltaTime;
if (_rangedEnemy.firstShot < 0)
{
_rangedEnemy.Attack(_rangedEnemy._target);
_rangedEnemy.firstShot = _rangedEnemy.reloadTime;
}
}
/*if (_attackCooldown <= 0f)
* {
* // Debug.Log("ATTACK!");
* _rangedEnemy.Attack(_rangedEnemy._target);
* _attackCooldown = _rangedEnemy.reloadTime;
* }*/
return(null);
}