42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
using System;
|
|
using Core.Extensions;
|
|
using UnityEngine;
|
|
|
|
public class AutomatedPlayer : AutoControlledEntity
|
|
{
|
|
public Player player;
|
|
public float playerMinDistance;
|
|
|
|
private void Update()
|
|
{
|
|
if (closestEntity)
|
|
{
|
|
stats.attackOriginCenter.Lookat2D(closestEntity.transform.position);
|
|
foreach (Ability ability in stats.abilities)
|
|
{
|
|
ability.TryAbility();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
Vector2 direction = new Vector2(0, stats.rb.linearVelocityY);
|
|
Entity target = player;
|
|
if (!closestEntity && Vector3.Distance(player.transform.position, transform.position) <= playerMinDistance)
|
|
{
|
|
stats.rb.linearVelocity = direction; //repeated code sucks but it works in this case i guess
|
|
return; //do not bother running any more code lol you're already next to the player and no enemies nearby
|
|
}
|
|
if (closestEntity && Vector3.Distance(closestEntity.transform.position, transform.position) < maxTargettingRange)
|
|
{
|
|
target = closestEntity;
|
|
}
|
|
direction.x = (target.transform.position - transform.position).normalized.x * stats.speed;
|
|
if ((target.transform.position.y - transform.position.y > maxHeightDifference || (DetectWalls() && Vector3.Distance(target.transform.position, transform.position) > minTargetJumpDistance)) && stats.OnGround())
|
|
{
|
|
direction.y = stats.jumpPower;
|
|
}
|
|
stats.rb.linearVelocity = direction;
|
|
}
|
|
}
|