How do you keep a constant velocity of an object Unity 5.5
I have a game object that the player hits around and what I want to do is have a constant speed of that game object even if its hit by the player.
Basically I start the object off with a directional translation which gives the magnitude of the velocity a 0. As soon as the object is hit by the player the magnitude is usually around 15-25. So after a hit by a player its not being moved with this line of code:
transform.Translate(Vector2.down * speed * Time.deltaTime);
What I was trying to accomplish was the bullet moving in a direction with a certain speed and when the player hits it, it stops relying on that translation and only on the velocity given by the player hitting it but it seems that I can detect the change in magnitude its just not changing the speed. I want the object to stay at a certain speed after being hit and not to go over or under that.
public float speed;
private float vel;
public Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
vel = rb.velocity.magnitude;
if (vel == 0)
{
transform.Translate(Vector2.down * speed * Time.deltaTime);
Debug.Log("Moving Via Translate");
}else{
Debug.Log("Moving Via player hits");
}
Debug.Log("Start velocity:" + vel);
//attempt to slow down gameobject or atleast change the speed.
if (vel > 25)
{
transform.Translate(Vector2.up * speed * Time.deltaTime);
}
}
Notes: When the magnitude of the object gets above 25 it doesn't seem to change any speeds As well the player is moved with the same .translation(Vector2.down * speed * Time.deltaTime);
I'm someone new to unity so if you could also explain that would be nice!
Your answer
Follow this Question
Related Questions
How to calculate velocity for Basketball 0 Answers
Namespaces, referencing those namespaces, and everything in between. 0 Answers
How do I get ball to go the same speed for the game Pong? 2 Answers
How can i change bool of other gameobject? 1 Answer
How do I measure the velocity of object in Z-direction? 0 Answers