private void ManageFireInput() { bool aimStatus = false; if (axisYType == AxisType.Stop || axisYType == AxisType.TowardsPosition) { float aimAngle = aiController.CalculateAimAngle(playerTarget, launchVelocity, true, transform); aimStatus = aiAiming.AimBarrel(new Vector3(aimAngle, barrelWheel.localEulerAngles.y, barrelWheel.localEulerAngles.z)); if (aimStatus == true) { bool clear = aiAiming.CheckBarrelClearance(sensorLength); if (clear) { flightTime = aiAiming.GetTrajectoryTime(launchVelocity); Shell projectile = aiAiming.Fire(launchVelocity, shell); projectile.SetAITankSource(this); } else { flightStatus = TrajectoryStatus.Fail; } } } }
private void DelayAutoMovement() { repositionTime += Time.deltaTime; if (repositionTime >= 1.5f) { repositionTime = 0; flightStatus = TrajectoryStatus.Standby; } }
public void SetProjectileTime(float time) { if (time / flightTime >= 0.95f) { flightStatus = TrajectoryStatus.Success; } else { flightStatus = TrajectoryStatus.Fail; } }
IEnumerator StopAxesAfterDuration(AxisType axisType, float duration) { yield return(new WaitForSeconds(duration)); StopAxis(axisType, Axis.X); StopAxis(axisType, Axis.Y); if (axisType == AxisType.TowardsPlayer) { flightStatus = TrajectoryStatus.Success; } }
private void ManageMovement() { if ((playerTarget - transform.position).magnitude > maxDistance) { repositionOn = false; SetAxis(1, AxisType.TowardsPlayer, Axis.Y); // Calculate direction of target for rotation float frontAngle = Vector3.Angle(transform.forward, playerTarget - transform.position); float rightAngle = Vector3.Angle(transform.right, playerTarget - transform.position); if (frontAngle > 10f && rightAngle > 90f) { SetAxis(-1, AxisType.TowardsPlayer, Axis.X); } else if (frontAngle > 10f && rightAngle < 90f) { SetAxis(1, AxisType.TowardsPlayer, Axis.X); } else { SetAxis(0, AxisType.TowardsPlayer, Axis.X); } } else if (flightStatus == TrajectoryStatus.Fail) { bool xCheck = SetAxis(0, AxisType.TowardsPlayer, Axis.X); bool yCheck = SetAxis(1, AxisType.TowardsPlayer, Axis.Y); if (xCheck && yCheck) { if (lastCoroutine != null) { StopCoroutine(lastCoroutine); } lastCoroutine = StartCoroutine(StopAxesAfterDuration(AxisType.TowardsPlayer, 1.5f)); flightStatus = TrajectoryStatus.Standby; } } else if (flightStatus == TrajectoryStatus.Success) { StopAxis(AxisType.TowardsPlayer, Axis.X); StopAxis(AxisType.TowardsPlayer, Axis.Y); } }
public void Publish(bool status, int id) { var msg = new TrajectoryStatus(status, id); ros.Send(topicName, msg); }