init
This commit is contained in:
commit
8fd4fb9fd6
36 files changed
+3329
No files matched your search
Executable
+120
@@ -0,0 +1,120 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class ShipControls : MonoBehaviour
|
||||
{
|
||||
//Use to switch between Force Modes
|
||||
enum ModeSwitching { Start, Impulse, Acceleration, Force, VelocityChange };
|
||||
ModeSwitching m_ModeSwitching;
|
||||
|
||||
Vector3 m_StartPos, m_StartForce;
|
||||
Vector3 m_NewForce;
|
||||
Rigidbody m_Rigidbody;
|
||||
|
||||
public float m_ForceAmp;
|
||||
public GameObject ship;
|
||||
|
||||
void Start()
|
||||
{
|
||||
//You get the Rigidbody component you attach to the GameObject
|
||||
m_Rigidbody = GetComponent<Rigidbody>();
|
||||
|
||||
//This starts at first mode (nothing happening yet)
|
||||
m_ModeSwitching = ModeSwitching.Start;
|
||||
|
||||
//Initialising the force which is used on GameObject in various ways
|
||||
m_NewForce = new Vector3(-5.0f, 1.0f, 0.0f);
|
||||
|
||||
//The GameObject's starting position and Rigidbody position
|
||||
m_StartPos = transform.position;
|
||||
m_StartForce = m_Rigidbody.transform.position;
|
||||
}
|
||||
|
||||
void FixedUpdate()
|
||||
{
|
||||
//If the current mode is not the starting mode (or the GameObject is not reset), the force can change
|
||||
if (m_ModeSwitching != ModeSwitching.Start)
|
||||
{
|
||||
//The force changes depending what you input into the text fields
|
||||
m_NewForce = ship.transform.forward * m_ForceAmp;
|
||||
}
|
||||
|
||||
//Here, switching modes depend on button presses in the Game mode
|
||||
switch (m_ModeSwitching)
|
||||
{
|
||||
//This is the starting mode which resets the GameObject
|
||||
case ModeSwitching.Start:
|
||||
//This resets the GameObject and Rigidbody to their starting positions
|
||||
transform.position = m_StartPos;
|
||||
m_Rigidbody.transform.position = m_StartForce;
|
||||
|
||||
//This resets the velocity of the Rigidbody
|
||||
m_Rigidbody.velocity = new Vector3(0f, 0f, 0f);
|
||||
break;
|
||||
|
||||
//These are the modes ForceMode can force on a Rigidbody
|
||||
//This is Acceleration mode
|
||||
case ModeSwitching.Acceleration:
|
||||
//Use Acceleration as the force on the Rigidbody
|
||||
m_Rigidbody.AddForce(m_NewForce, ForceMode.Acceleration);
|
||||
break;
|
||||
|
||||
//This is Force Mode, using a continuous force on the Rigidbody considering its mass
|
||||
case ModeSwitching.Force:
|
||||
|
||||
//Use Force as the force on GameObject’s Rigidbody
|
||||
m_Rigidbody.AddForce(m_NewForce, ForceMode.Force);
|
||||
break;
|
||||
|
||||
//This is Impulse Mode, which involves using the Rigidbody’s mass to apply an instant impulse force.
|
||||
case ModeSwitching.Impulse:
|
||||
//Use Impulse as the force on GameObject
|
||||
m_Rigidbody.AddForce(m_NewForce, ForceMode.Impulse);
|
||||
break;
|
||||
|
||||
//This is VelocityChange which involves ignoring the mass of the GameObject and impacting it with a sudden speed change in a direction
|
||||
case ModeSwitching.VelocityChange:
|
||||
//Make a Velocity change on the Rigidbody
|
||||
m_Rigidbody.AddForce(m_NewForce, ForceMode.VelocityChange);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//The function outputs buttons, text fields, and other interactable UI elements to the Scene in Game view
|
||||
void OnGUI()
|
||||
{
|
||||
//Press the button to reset the GameObject and Rigidbody
|
||||
if (GUI.Button(new Rect(100, 0, 150, 30), "Reset"))
|
||||
{
|
||||
//This switches to the start/reset case
|
||||
m_ModeSwitching = ModeSwitching.Start;
|
||||
}
|
||||
|
||||
//When you press the Acceleration button, switch to Acceleration mode
|
||||
if (GUI.Button(new Rect(100, 30, 150, 30), "Apply Acceleration"))
|
||||
{
|
||||
//Switch to Acceleration (apply acceleration force to GameObject)
|
||||
m_ModeSwitching = ModeSwitching.Acceleration;
|
||||
}
|
||||
|
||||
//If you press the Impulse button
|
||||
if (GUI.Button(new Rect(100, 60, 150, 30), "Apply Impulse"))
|
||||
{
|
||||
//Switch to impulse (apply impulse forces to GameObject)
|
||||
m_ModeSwitching = ModeSwitching.Impulse;
|
||||
}
|
||||
|
||||
//If you press the Force Button, switch to Force state
|
||||
if (GUI.Button(new Rect(100, 90, 150, 30), "Apply Force"))
|
||||
{
|
||||
//Switch to Force (apply force to GameObject)
|
||||
m_ModeSwitching = ModeSwitching.Force;
|
||||
}
|
||||
|
||||
//Press the button to switch to VelocityChange state
|
||||
if (GUI.Button(new Rect(100, 120, 150, 30), "Apply Velocity Change"))
|
||||
{
|
||||
//Switch to velocity changing
|
||||
m_ModeSwitching = ModeSwitching.VelocityChange;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user