private bool TryRotateUsingStarter(GameObject shipBase) { float rotationFix = TryGetRotationFixFinisher(shipBase); bool result = false; if (!float.IsNaN(rotationFix)) { result = true; float angleFix = GetAngleFixRotation(shipBase); float savedRotation = TheShip.GetModelOrientation().transform.localEulerAngles.y; TheShip.SetRotationHelper2Angles(new Vector3(0, rotationFix, 0)); TheShip.UpdateRotationHelperAngles(new Vector3(0, angleFix, 0)); if (GetPathToProcessLeft(shipBase) <= 0) { result = false; TheShip.SetRotationHelper2Angles(new Vector3(0, savedRotation, 0)); TheShip.UpdateRotationHelperAngles(new Vector3(0, -angleFix, 0)); } } return(result); }
// ROTATION public void UpdateRotation() { if (GetPathToProcessLeft(TheShip.GetModelOrientation()) > 0) { float rotationFix = GetRotationFix(TheShip.GetModelOrientation()); TheShip.SetRotationHelper2Angles(new Vector3(0, rotationFix, 0)); float angleFix = GetAngleFix(TheShip.GetModelOrientation()); TheShip.UpdateRotationHelperAngles(new Vector3(0, angleFix, 0)); } AddMovementTemplateCenterPoint(TheShip.Model); }
private void DoBarrelRollAnimation() { float progressStep = 2.5f * Time.deltaTime * Options.AnimationSpeed; progressStep = Mathf.Min(progressStep, progressTarget - progressCurrent); progressCurrent += progressStep; TheShip.SetPosition(Vector3.MoveTowards(TheShip.GetPosition(), TemporaryShipBase.transform.position, progressStep)); TheShip.RotateModelDuringBarrelRoll(progressCurrent / progressTarget, HelperDirection); TheShip.SetRotationHelper2Angles(new Vector3(0, progressCurrent / progressTarget * (plannedRotation - initialRotation), 0)); TheShip.MoveUpwards(progressCurrent / progressTarget); if (progressCurrent >= progressTarget) { performingAnimation = false; GameMode.CurrentGameMode.FinishBarrelRoll(); } }
private void DoBarrelRollAnimation() { float progressStep = Time.deltaTime * 0.2f * (0.5f + Options.AnimationSpeed * 10f); progressStep = Mathf.Min(progressStep, progressTarget - progressCurrent); progressCurrent += progressStep; TheShip.SetPosition(Vector3.MoveTowards(TheShip.GetPosition(), TemporaryShipBase.transform.position, progressStep)); if (!IsTractorBeamBarrelRoll && !TheShip.IsLandedModel) { TheShip.RotateModelDuringBarrelRoll(progressCurrent / progressTarget, (Direction == Direction.Left) ? -1 : 1); TheShip.SetRotationHelper2Angles(new Vector3(0, progressCurrent / progressTarget * (plannedRotation - initialRotation), 0)); TheShip.MoveUpwards(progressCurrent / progressTarget); } if (progressCurrent >= progressTarget) { performingAnimation = false; FinishReposition(); } }