Skip to content
Snippets Groups Projects
Commit 06d467fc authored by Sárközi Gergely János's avatar Sárközi Gergely János
Browse files

fix turrets: walls rotating, friendlies targeted

parent 3fb8adfc
No related branches found
Tags milestone-3-last
No related merge requests found
Pipeline #22579 passed
...@@ -17,6 +17,7 @@ public class Tower : Building { ...@@ -17,6 +17,7 @@ public class Tower : Building {
float closestDistance = float.PositiveInfinity; float closestDistance = float.PositiveInfinity;
Vector2 turretPosition = Position.ToVectorCentered(); Vector2 turretPosition = Position.ToVectorCentered();
foreach (Unit unit in World.Units) { foreach (Unit unit in World.Units) {
if (unit.Owner == Owner) continue;
float distance = unit.Position.Distance2(turretPosition); float distance = unit.Position.Distance2(turretPosition);
if (closestDistance > distance) { if (closestDistance > distance) {
closestDistance = distance; closestDistance = distance;
......
using Logic.Data.World;
namespace Logic.Event.World.Barrack { namespace Logic.Event.World.Barrack {
public interface IBarrackEvent { public interface IBarrackEvent {
public Data.World.Barrack Barrack { get; } public Data.World.Barrack Barrack { get; }
......
...@@ -23,14 +23,9 @@ public class Tower : Structure { ...@@ -23,14 +23,9 @@ public class Tower : Structure {
private World _world; private World _world;
private void FixedUpdate() { private void FixedUpdate() {
Logic.Data.World.Unit logicTarget = _data.Target ?? _data.ClosestEnemy; if (_data.Type.Range > 0) {
if (logicTarget != null && logicTarget.IsAlive) { Logic.Data.World.Unit logicTarget = _data.Target ?? _data.ClosestEnemy;
Vector3 target = _world.LogicToPresentation(logicTarget).transform.position; if (logicTarget != null) RotateTurret(logicTarget);
Vector3 direction = (target - rotatingTurret.position).normalized;
float angle = Mathf.Rad2Deg * Mathf.Atan2(direction.y, direction.x);
Quaternion desired = Quaternion.AngleAxis(angle - 90, Vector3.forward);
rotatingTurret.rotation = Quaternion.RotateTowards(rotatingTurret.rotation, desired,
Time.fixedDeltaTime * turretRotationSpeed);
} }
} }
...@@ -56,5 +51,14 @@ public class Tower : Structure { ...@@ -56,5 +51,14 @@ public class Tower : Structure {
public void DestroyTower() { public void DestroyTower() {
Destroy(gameObject); Destroy(gameObject);
} }
private void RotateTurret(Logic.Data.World.Unit logicTarget) {
Vector3 target = _world.LogicToPresentation(logicTarget).transform.position;
Vector3 direction = (target - rotatingTurret.position).normalized;
float angle = Mathf.Rad2Deg * Mathf.Atan2(direction.y, direction.x);
Quaternion desired = Quaternion.AngleAxis(angle - 90, Vector3.forward);
rotatingTurret.rotation = Quaternion.RotateTowards(rotatingTurret.rotation, desired,
Time.fixedDeltaTime * turretRotationSpeed);
}
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment