Hello,
I have been following the evac city tutorial in my attempt to make a top down shooter. I have run into a snag when trying to use the Right analog stick on my logitech gamepad to determine player rotation. I can get the player to rotate with the stick just fine, but when I release the stick my player snaps back to looking towards the top of the screen and Unity gives a Log entry of “Look rotation vector is equal to zero”. Code is below, any ideas are greatly appreciated.
` using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
private GameObject objPlayer;
private GameObject objCamera;
private Vector3 inputRotation;
private Vector3 inputMovement;
public float moveSpeed = 100.0f;
private bool thisIsPlayer;
private Vector3 tempVector;
private Vector3 tempVector2;
// Use this for initialization
void Start () {
objPlayer = (GameObject) GameObject.FindWithTag("Player");
objCamera = (GameObject) GameObject.FindWithTag("MainCamera");
if (gameObject.tag == "Player") { thisIsPlayer = true; }
}
// Update is called once per frame
void Update () {
FindInput();
ProcessMovement();
if (thisIsPlayer == true) {
HandleCamera();
}
}
void FindInput () {
if (thisIsPlayer == true)
{
FindPlayerInput();
}
}
void FindPlayerInput () {
inputMovement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical") );
inputRotation = new Vector3(Input.GetAxis("RightH"), 0, Input.GetAxis("RightV") );
}
void ProcessMovement () {
tempVector = rigidbody.GetPointVelocity(transform.position) * Time.deltaTime * 1000;
rigidbody.AddForce(-tempVector.x, -tempVector.y, -tempVector.z);
rigidbody.AddForce(inputMovement.normalized * moveSpeed * Time.deltaTime);
transform.rotation = Quaternion.LookRotation(inputRotation);
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y + 180, 0);
transform.position = new Vector3(transform.position.x, 0, transform.position.z);
}
void HandleCamera () {
objCamera.transform.position = new Vector3(transform.position.x, 15, transform.position.z);
objCamera.transform.eulerAngles = new Vector3(90, 0, 0);
}
}`