Question by
kito-kito12 · Dec 31, 2016 at 04:33 PM ·
rigidbodyvelocity
RigidBody,velocity not working on Start method
Hi everyone,
I am pretty noob in Unity but i am having some trouble that i don´t understand. I saw some tutorials where they assign a initial velocity to a rigidbody, and i am doing the exactly same thing and it´s not working. They do it in the Start() method but for me only works on the Update method. This is really a problem for me because i need it on the Start method in order to not assinging the same velocity in every frame.
Like this doesnt work:
public class testVelocity : MonoBehaviour {
public Vector3 initialVelocity;
public Vector3 initialAngularVelocity;
private Rigidbody rigidBodyBall;
// Use this for initialization
void Start () {
rigidBodyBall = GetComponent<Rigidbody>();
rigidBodyBall.velocity = initialVelocity;
rigidBodyBall.angularVelocity = initialAngularVelocity;
}
// Update is called once per frame
void Update () {
}
}
It only works like here:
public class testVelocity : MonoBehaviour {
public Vector3 initialVelocity;
public Vector3 initialAngularVelocity;
private Rigidbody rigidBodyBall;
// Use this for initialization
void Start () {
rigidBodyBall = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
rigidBodyBall.velocity = initialVelocity;
rigidBodyBall.angularVelocity = initialAngularVelocity;
}
}
Comment
Answer by Hetmanus · Dec 31, 2016 at 08:25 PM
Most probably there is something blocking your object. If you dont mind one frame you can try this:
[RequireComponent(typeof(Rigidbody))]
public class testVelocity : MonoBehaviour {
public Vector3 initialVelocity;
public Vector3 initialAngularVelocity;
private Rigidbody rigidBodyBall;
IEnumerator Start () {
rigidBodyBall = GetComponent<Rigidbody>();
yield return null;
rigidBodyBall.velocity = initialVelocity;
rigidBodyBall.angularVelocity = initialAngularVelocity;
}
}