system
1
hey,
I have a little problem with Quaternions.
i am shooting a little ball, and when that ball collides with the ground a flat sphere( circle ) should appear. Everything works just fine, but the rotation is wrong.
I am using the LookRotation-function of the Quaternion, but it seems i don’t fully understand what it does.
(for example my level is a completely flat, so it should look exactly 90° upwards. But the rotation of the circle is x 76, y 74, z 1)
ATM my code looks like that:
void OnCollisionEnter(Collision collision)
{
contact = collision.contacts[0];
Instantiate(SpinningRange, transform.position, Quaternion.LookRotation(contact.normal) );
}
i hope someone can help me =)
Anxo
2
if you just want it to look up, I think you can use.
Instatiate(SpinningRange, transform.position, Quaternion.SetLookRotation(Vector3.up));
or
var Clone : GameObject = Instatiate(SpinningRange, transform.position,transform.rotation);
Clone.rotation = (desired rotation);
I guess the problem is that you don’t set the up-vector explicitly.
Therefore you call Quaternion.LookRotation like this:
Quaternion.LookRotation(contact.normal,Vector3.up);
The problem is that if contact.normal equals Vector3.up you get in trouble. The second parameter (the up-vector) specifies the rotation around the axis given in the first parameter. If the first parameter is Vector3.up you have to use Vector3.right or .forward as up-vector.