- Home /
Can't get ship rotating in place to "launch" in direction it's currently facing
I have a spaceship rotating in place. When the player presses the "space" key I want the ship to move in whatever direction it's currently facing. I'm trying to add a force to a rigidbody2d, but it's obviously not working. All of my debug.log's seem to be working correctly, but nothing happens when the "launch" method runs.
This is my current script. The player ship is in the Rb place in the inspector.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerShip : MonoBehaviour { public int speed; public bool flying = false; public int rotationSpeed = -50;
public int rotationDir = 0;
public float thrust = 30f;
public Rigidbody2D rb;
// Use this for initialization
void Start ()
{
//current pos = new position
transform.position = new Vector3(-1.69f, -3.91f, 0);
//rb = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update ()
{
ShipRotation();
if (Input.GetKeyDown(KeyCode.Space))
{
Launch();
Debug.Log("You have pressed the Space key");
}
}
void ShipRotation()
{
flying = false;
if (rotationDir == 0)
{
// Rotate the object around its local Z axis at 1 degree per second
transform.Rotate(0, 0, Time.deltaTime * rotationSpeed);
}
else
{
transform.Rotate(0, 0, Time.deltaTime * rotationSpeed * -1);
}
}
public void Launch()
{
if (rb == null)
{
Debug.Log("there is no rigidbody");
}
else if (rb != null)
{
Debug.Log("I have found a rigid body!");
}
rb.AddRelativeForce(Vector3.forward * thrust * Time.deltaTime);
}
}
Answer by cosieja · Aug 01, 2018 at 03:30 PM
Eventually figured it out. "AddRelativeForce" was what I was missing. I also change the "flying" bool to stop the rotation of the ship when it is launched, which allows it to fly across the screen in a straight line.
void FixedUpdate() { //rb.AddRelativeForce(Vector2.up * thrustInput); if (Input.GetButtonDown("Jump")) { flying = true;
rb.AddRelativeForce(Vector2.up * thrust * speed);
Debug.Log("You have pressed the Space key");
Launch();
}
}