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