Im making a 2D space sandbox game where you are a astroid/planet and just explore. But the problem I have is that when I hit another object (planet/astroid) they don’t “bounce” away or move away from the player. Im using Circle Collider and tried using rigidbody on both the object and the player but nothing works.
I think it might be becasue of the the movment script I use. It based on a concept that if I push down a button it will accelerate and if I let go it will deaccelerate. Here is the code for the movment if someone is wondering.
public class TestingMovesKeys : MonoBehaviour
{
float ShipCurrentSpeed = 0f;
public float ShipTopSpeed = 40f;
float ShipCurrentSpeedX = 0f;
public float RevShipTopSpeed = -40f;
public float ShipAcceleration = 1f;
public float ShipDeacceleration = 0.5f;
void Update()
{
if (Input.GetButton("W") == false) // If im not holding down "W"
{
if (ShipCurrentSpeed > 0)
{
ShipCurrentSpeed -= ShipDeacceleration;
}
}
else if (Input.GetButton("W") && (ShipCurrentSpeed < ShipTopSpeed)) // If im holding down "W"
{
ShipCurrentSpeed += ShipAcceleration;
}
if (Input.GetButton("S") == false) // If im not holding down "S"
{
if (ShipCurrentSpeed < 0)
{
ShipCurrentSpeed += ShipDeacceleration;
}
}
else if (Input.GetButton("S") && (ShipCurrentSpeed > RevShipTopSpeed)) // If im holding down "S"
{
ShipCurrentSpeed -= ShipAcceleration;
}
// X-axis
if (Input.GetButton("D") == false)
{
if (ShipCurrentSpeedX > 0)
{
ShipCurrentSpeedX -= ShipDeacceleration;
}
}
else if (Input.GetButton("D") && (ShipCurrentSpeedX < ShipTopSpeed))
{
ShipCurrentSpeedX += ShipAcceleration;
}
if (Input.GetButton("A") == false)
{
if (ShipCurrentSpeedX < 0)
{
ShipCurrentSpeedX += ShipDeacceleration;
}
}
else if (Input.GetButton("A") && (ShipCurrentSpeedX > RevShipTopSpeed))
{
ShipCurrentSpeedX -= ShipAcceleration;
}
// X-axis
if (ShipCurrentSpeedX >= 0)
{
transform.Translate(Vector3.right * Time.deltaTime * ShipCurrentSpeedX);
}
if (ShipCurrentSpeedX <= 0)
{
transform.Translate(Vector3.right * Time.deltaTime * ShipCurrentSpeedX);
}
// Y axis
if (ShipCurrentSpeed >= 0)
{
transform.Translate(Vector3.up * Time.deltaTime * ShipCurrentSpeed);
}
if (ShipCurrentSpeed <= 0)
{
transform.Translate(Vector3.up * Time.deltaTime * ShipCurrentSpeed);
}
}
}