Aim at my cursor
Hello! How do i make my character aim at the mouse cursor in 2.5d game? The asset is FPSME and ive turned it into 2.5d game. This is the script from player 2 (See image who is player 2) and as in FPS, i move ouse down, my guy aims at the floor. I obviously want to make him shoot where my mouse is. using System; using UnityEngine;
public class MouseLook : MonoBehaviour
{
[HideInInspector]public static MouseLook instance;
public float XSensitivity = 2f;
public float YSensitivity = 2f;
public bool clampVerticalRotation = true;
public float MinimumX = -90F;
public float MaximumX = 90F;
public bool smooth;
public float smoothTime = 5f;
public bool lockCursor = true;
private Quaternion m_CharacterTargetRot;
private Quaternion m_CameraTargetRot;
private bool m_cursorIsLocked = true;
public void Init(Transform character, Transform camera)
{
m_CharacterTargetRot = character.localRotation;
m_CameraTargetRot = camera.localRotation;
}
public void LookRotation(Transform character, Transform camera)
{
float yRot = PlayerInputManager.instance.MouseX * XSensitivity;
float xRot = PlayerInputManager.instance.MouseY * YSensitivity;
m_CharacterTargetRot *= Quaternion.Euler (0f, yRot, 0f);
m_CameraTargetRot *= Quaternion.Euler (-xRot, 0f, 0f);
if(clampVerticalRotation)
m_CameraTargetRot = ClampRotationAroundXAxis (m_CameraTargetRot);
if(smooth)
{
character.localRotation = Quaternion.Slerp (character.localRotation, m_CharacterTargetRot,
smoothTime * Time.deltaTime);
camera.localRotation = Quaternion.Slerp (camera.localRotation, m_CameraTargetRot,
smoothTime * Time.deltaTime);
}
else
{
character.localRotation = m_CharacterTargetRot;
camera.localRotation = m_CameraTargetRot;
}
}
private void InternalLockUpdate()
{
if(Input.GetKeyUp(KeyCode.Escape))
{
m_cursorIsLocked = false;
}
else if(Input.GetMouseButtonUp(0))
{
m_cursorIsLocked = true;
}
if (m_cursorIsLocked)
{
Cursor.lockState = CursorLockMode.Confined;
Cursor.visible = false;
}
else if (!m_cursorIsLocked)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
}
}
Quaternion ClampRotationAroundXAxis(Quaternion q)
{
q.x /= q.w;
q.y /= q.w;
q.z /= q.w;
q.w = 1.0f;
float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x);
angleX = Mathf.Clamp (angleX, MinimumX, MaximumX);
q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleX);
return q;
}
}
With this also comes another problem. How do i make my guy to do 180° degree turn? When i aim behind my player 2, it could turn player 180° degrees. Player2 is spawned in game, so it needs camera and all that. Player is a child of player2 and needs to do the 180° turning.
Answer by DageLV · Aug 04, 2018 at 01:07 PM
I contacted asset owner, he said this is the thing what makes me aim where i do. How do i change this?
public void HandleThirdPersonAiming()
{
if (ThirdPersonPhotonView.isMine) { //If this is our instance of the game
float AimAngle = PlayerCamera.transform.localRotation.x; //Get get our current local aimangle
PlayerThirdPersonAnimator.SetFloat ("AimAngle", AimAngle * 1.5f); //Set the float AimAngle in the animator on our player instance
if (ThirdPersonWorldWeapon != null && WeaponIK && ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().LeftHandTransform != null) {
LeftHand.position = ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().LeftHandTransform.position;
if (ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().IgnoreLeftHandRotation == false) {
LeftHand.rotation = ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().LeftHandTransform.rotation;
}
}
}
if (!ThirdPersonPhotonView.isMine) { //If this is a other player
PlayerThirdPersonAnimator.SetFloat ("AimAngle", Mathf.Lerp (PlayerThirdPersonAnimator.GetFloat ("AimAngle"), SyncedAimangle, 0.05f)); //Lerp the aimangle so it looks smooth on our instance
if (ThirdPersonWorldWeapon != null && WeaponIK && ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().LeftHandTransform != null) {
LeftHand.position = ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().LeftHandTransform.position;
if (ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().IgnoreLeftHandRotation == false) {
LeftHand.rotation = ThirdPersonWorldWeapon.GetComponent<ThirdPersonWeapon> ().LeftHandTransform.rotation;
}
}
}
}