- Home /
How to make a 2D character points his gun to the mouse position?
Hi all,
I'm trying to make a 2D Run'n'gun game, like Metal Slug. The player controls the character using W, A, S and D, and shot with the mouse. I'm trying to make the character points his gun to the mouse position, just like in the game Facewound, but without success. Is there any simple way to make the character point his gun to the mouse position? I've tried to change the MouseLook.cs, but the arm rotates around the center, and not at the sholder.
Thanks for everything.
Answer by Jorge · Jan 24, 2011 at 12:38 AM
Managed to solve it. A quick tutorial to how to do it:
Create a Empty GameObject and a Cube, and stretch the cube to make the arm. Make the Empty GameObject be the parent of the Cube. Make sure that the Empty GameObject is in the end of the cube. It should be on the "sholder" of the "arm".
Add the following code to the Empty GameObject. It's a modification of the MouseLook.cs:
// using UnityEngine; using System.Collections;
public class MouseLook : MonoBehaviour { public float sensitivityY = 15F;
public float minimumY = -60F; public float maximumY = 60F;
float rotationY = 0F;
Quaternion originalRotation;
void Update () { rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = ClampAngle (rotationY, minimumY, maximumY);
Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
transform.localRotation = originalRotation * yQuaternion;
}
void Start () { if (rigidbody) rigidbody.freezeRotation = true; originalRotation = transform.localRotation; }
public static float ClampAngle (float angle, float min, float max) { if (angle < -360F) angle += 360F; if (angle > 360F) angle -= 360F; return Mathf.Clamp (angle, min, max); }
} //
It may have some unnecessary lines of code. I didn't filtered what I need, only modified to follow the mouse in 2D.
The "arm" - the stretched Cube - will point to the mouse, because the Empty GameObject is always facing the mouse position.
Hope that it helps somebody.
I tried this script and it doesn't rotate the gun like expected. It twists the gun along the x axis. It's a good start for me though, I'll try to debug it.
Answer by Dasherz · Sep 06, 2012 at 03:10 AM
I have actually used this in my 2d game but I had to completely scrap the X axis part of the code. It worked perfectly then.
Yeah, I just had to change " Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
" to " Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.forward);
"
Your answer
Follow this Question
Related Questions
Rotate a gameobject(player)on the y axis towards mouse position in c# 2 Answers
2D platformer cursor 1 Answer
Shooting in direction of mouse cursor 2d 5 Answers
I need help with clamping a rotation towards the mouse position 2 Answers
Cannonball not shooting according to the rotation of the cannon. 1 Answer