- Home /
Instantiate gun & arms rig relative to rotation & position of first person controller camera
I have a script attached to a first person controller, which instantiates a model of a pair of arms holding a gun in front of the camera, and parents it to the camera. Seen below :
GameObject InstantiateGun (GameObject currentGunPrefab)
{
GameObject GunInstance;
/* create the point in space at which guns will be held on front of player,
* relative to Camera position */
Vector3 gunMeshOrigin = new Vector3();
gunMeshOrigin = Camera.main.transform.position;
gunMeshOrigin.y -= 1.45f;
gunMeshOrigin.z += 0.5f;
gunMeshOrigin.x += 0.25f;
GunInstance = Instantiate(currentGunPrefab, gunMeshOrigin,
Quaternion.Euler(Camera.main.transform.rotation.x,
Camera.main.transform.rotation.y - 180,
Camera.main.transform.rotation.z)) as GameObject;
GunInstance.transform.parent = Camera.main.transform;
return GunInstance;
}
This works fine when I immediately instantiate the prefab in the Start()
function (i.e. before the FPC has had a chance to move around): The rotation & position are perfect, relative to the camera, and if I move around everything still looks great. However, I recently changed it so the FPC has to collide with something in order to instantiate the gun. Now, whenever I instantiate the gun Im usually facing a different direction. The gun still sticks on me like it should and moves with me, however it's not sicking out in front of my camera. It always instantiates facing the same direction.
How can I get my prefab to instantiate always facing the same direction, relative to the forward direction of the camera? I thought that using the Camera's rotation in the actual Instantiate()
call would do it.
Your answer
Follow this Question
Related Questions
Video provided-Rotate 2d character in 3d world 1 Answer
Camera Relative Movement 2 Answers
Rotate object relative to camera's view 2 Answers
blocks being placed in an odd way 0 Answers
Camera follows target rotation 3 Answers