// Update is called once per frame void Update() { if (Waypoint.Count > 0) { Vector3 destination = (Vector3)Waypoint[0]; UnitRotationStatus rotation = (UnitRotationStatus)WaypointD[0]; float border = UnitSpeed / 50; if (Vector3.Distance(destination, transform.position) > border) { transform.position += (destination - transform.position).normalized * UnitSpeed * Time.deltaTime; if (confirmRotation != rotation || rotationConfirmed) { SetRotation(rotation); confirmRotation = rotation; rotationConfirmed = false; } if (Vector3.Distance(destination, transform.position) <= border) { transform.position = destination; Waypoint.RemoveAt(0); WaypointD.RemoveAt(0); } } } }
public void SetRotation() { UnitBodySpec.RotateBody(getAngle(UnitRotation)); if (!UnitBodySpec.RotateTurret((360 - getAngle(UnitRotation)) + getAngle(TurretRotation))) { TurretRotation = UnitRotation; } }
public int getArmorIndex(UnitRotationStatus flank, UnitRotationStatus rotation) { if (flank == rotation) { return(0); } else if (flank == OppositeRotationStatus(rotation)) { return(2); } return(1); }
public float getArmor(UnitRotationStatus flank) { int chassisArmorIndex = getArmorIndex(flank, UnitRotation); float totalDefense = 0; float[] armor; armor = UnitBodySpec.getArmor(); if (armor != null) { totalDefense += armor [chassisArmorIndex]; } return(totalDefense); }
private float getAngle(UnitRotationStatus rotation) { switch (rotation) { case UnitRotationStatus.N: return(270); case UnitRotationStatus.S: return(90); case UnitRotationStatus.E: return(0); case UnitRotationStatus.W: return(180); } return(0); }
public float getArmor(UnitRotationStatus flank, bool frontOnly) { if (frontOnly) { int chassisArmorIndex = 0; int turretArmorIndex = 0; float totalDefense = 0; float[] armor; armor = UnitBodySpec.getArmor(); if (armor != null) { totalDefense += armor [chassisArmorIndex]; } return(totalDefense); } return(getArmor(flank)); }
public static UnitRotationStatus OppositeRotationStatus(UnitRotationStatus rotation) { switch (rotation) { case UnitRotationStatus.E: return(UnitRotationStatus.W); case UnitRotationStatus.W: return(UnitRotationStatus.E); case UnitRotationStatus.S: return(UnitRotationStatus.N); case UnitRotationStatus.N: return(UnitRotationStatus.S); } return(rotation); }
public void ConfirmMovement() { UnitRotation = TurretRotation = confirmRotation; rotationConfirmed = true; EndMovement(); }
void SetRotation(UnitRotationStatus rotation) { UnitBodySpec.RotateBody(getAngle(rotation)); UnitBodySpec.RotateTurret((360 - getAngle(rotation)) + getAngle(rotation)); }