// Update is called once per frame private void Update() { var closest = getClosestRangedPig(); if (!closest) { if (flammableClosest != null) { flammableClosest.deselect(); flammableClosest = null; } return; } if (flammableClosest != closest) { if (flammableClosest != null) { flammableClosest.deselect(); } flammableClosest = closest; flammableClosest.select(); } if (Input.GetKeyDown(KeyCode.E)) { // kill it with fire!! closest.startFire(); } }
public void unselectAll() { if (flammableClosest != null) { flammableClosest.deselect(); flammableClosest = null; } }
private Flammable getClosestRangedPig() { Flammable best = null; var closestDistSqr = Mathf.Infinity; var currentPosition = transform.position; foreach (var flammable in pigList.pigs) { var directionToTarget = flammable.transform.position - currentPosition; var distSqrtToTarget = new Vector2(directionToTarget.x, directionToTarget.y).sqrMagnitude; if (!(distSqrtToTarget < closestDistSqr) || !(distSqrtToTarget < attackRange * attackRange)) { continue; } closestDistSqr = distSqrtToTarget; best = flammable; } return(best); }