Skip to content

Commit 6dd52b5

Browse files
committed
add autorotation
1 parent 0250576 commit 6dd52b5

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

Assets/Scripts/Managers/UiManager.cs

+36
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,45 @@ public void init(int value)
7373
BodiesCountSlider.GetComponent<SliderUi>().Label.text = "Number of Galaxies";
7474
RadiusSlider.GetComponent<SliderUi>().Label.text = "Universe Radius";
7575
initialVelocitySlider.GetComponent<SliderUi>().Label.text = "Galaxies Initial Velocity";
76+
77+
break;
78+
79+
}
80+
}
81+
SimulationType previousType;
82+
public void setCameraRotation()
83+
{
84+
Debug.Log(previousType + " " + GlobalManager.Instance.SimulationParameter.simulationType);
85+
if (previousType == GlobalManager.Instance.SimulationParameter.simulationType)
86+
return;
87+
88+
switch (GlobalManager.Instance.SimulationParameter.simulationType)
89+
{
90+
case SimulationType.Galaxy:
91+
Camera.main.transform.rotation = Quaternion.Euler(90, 0, 0);
92+
Camera.main.GetComponent<CameraMovement>().AutoRotation = false;
93+
Camera.main.GetComponent<CameraMovement>().DistanceToTarget = radiusSlider.value;
94+
95+
break;
96+
case SimulationType.Collision:
97+
Camera.main.transform.rotation = Quaternion.Euler(90, 0, 0);
98+
Camera.main.GetComponent<CameraMovement>().AutoRotation = false;
99+
Camera.main.GetComponent<CameraMovement>().DistanceToTarget = radiusSlider.value * 2;
100+
101+
102+
break;
103+
case SimulationType.Universe:
104+
Camera.main.transform.rotation = Quaternion.Euler(0, 0, 0);
105+
Camera.main.GetComponent<CameraMovement>().AutoRotation = true;
106+
Camera.main.GetComponent<CameraMovement>().DistanceToTarget = radiusSlider.value * 2;
107+
76108
break;
77109

78110
}
111+
112+
113+
previousType = GlobalManager.Instance.SimulationParameter.simulationType;
114+
79115
}
80116
}
81117

Assets/Scripts/Ui/CameraMovement.cs

+8-3
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ public class CameraMovement : MonoBehaviour
1111
[SerializeField] private float distanceToTarget = 30;
1212
[SerializeField] private float mouseScroolSpeed = 100f;
1313
[SerializeField] GameObject canva;
14-
14+
[SerializeField] private float autoRotationSpeed = 2f;
15+
public float rotationSpeed = 10f;
1516
private Vector3 previousPosition;
1617

1718
public float DistanceToTarget { get => distanceToTarget; set => distanceToTarget = value; }
18-
19+
public bool AutoRotation { get; set; }
1920
private void LateUpdate()
2021
{
2122

22-
if (EventSystem.current.IsPointerOverGameObject())
23+
if (EventSystem.current.IsPointerOverGameObject()&&Input.GetMouseButton(0))
2324
{
2425
return;
2526
}
@@ -41,6 +42,10 @@ private void LateUpdate()
4142
cam.transform.Rotate(new Vector3(1, 0, 0), rotationAroundXAxis);
4243
cam.transform.Rotate(new Vector3(0, 1, 0), rotationAroundYAxis, Space.World); // <— This is what makes it work!
4344
}
45+
else if (AutoRotation)
46+
{
47+
cam.transform.RotateAround(target.position, Vector3.up, Time.deltaTime * autoRotationSpeed);
48+
}
4449
DistanceToTarget += -Input.mouseScrollDelta.y * mouseScroolSpeed * Time.deltaTime;
4550
cam.transform.Translate(new Vector3(0, 0, -DistanceToTarget));
4651

0 commit comments

Comments
 (0)