- Home /
Rotation troubles
Hello there.
I'm trying to create a 2.5d game
The player can throw strawberries from a game object, x = right, y = up, z=away.
I've created a plane prefab which is textured with the strawberry image. The plane has been rotated so that it faces the player, standing up, rather flat. x = right, y = up, z=away
This is all fine and when the prefab is in the scene it is displayed as I would like it.
I've written a script that will fire the plane prefab from the player game object, which works but, the plane is projected flat.
So I'm having difficulty getting the plane to face the player when fired.
It seems to me that this might be a problem or my understanding of how to instantiate the prefab, in that I'm not able to control the rotation.
Can anybody point me in the right direction on where the problem is coming from and how I might solve this.
Here is the code used on the player game object to project the prefab.
var speed = 3.0;
var PreFab:Transform;
function Update ()
{
//find out if a button is pressed
if(Input.GetButtonDown("Fire1"))
{
//create the prefab
var strawberry = Instantiate(PreFab, transform.position, transform.rotation);
//add force to the prefab
strawberry.rigidbody.AddForce(transform.forward * 1000);
}
}
Kind Regards
Iain
Answer by aldonaletto · Dec 19, 2011 at 07:24 PM
You must rotate the front direction of the plane to the player direction. If you created the plane in Unity, it probably is "looking" to the up direction. To create a suitable rotation, you should do something like this:
... if(Input.GetButtonDown("Fire1")) { // this rotation will rotate a plane that "looks" to the up direction // to be facing the player var rot = Quaternion.FromToRotation(Vector3.up, -transform.forward); //create the prefab var strawberry = Instantiate(PreFab, transform.position, rot); //add force to the prefab strawberry.rigidbody.AddForce(transform.forward * 1000); } ...If the plane with zero rotation is "looking" to any other direction, replace Vector3.up with the correct reference direction.
Answer by iaind78 · Dec 19, 2011 at 10:53 PM
Cheers Aldo, that's worked beautifully.
I'm not quite sure I understand everything that's happening, but I always find it easier to work something out when there's a solution. Off to the reference manual I go, then some tinkering with your code.
Thanks for taking the time to help me join the dots.
Kind Regards
Iain