Hi! Recently I have been starting on a 3rd person RPG, however my movement doesn’t seem to be working as intended. As it successfully rotates on button press, however forward and backward it doesn’t move forward in line with the cube. Basically if I rotated the cube to 45° and pressed W, it would move 0° forward not 45°. Thank you in advance!
-Azza
using UnityEngine;
using System.Collections;
public class MoveMe : MonoBehaviour {
//X is rotation, Y is forward/backward
private float hInput, vInput;
private GameObject playerObject;
public float rotateSmooth, velocitySmooth;
// Use this for initialization
void Start () {
}
void FixedUpdate()
{
//Cache input
hInput = Input.GetAxisRaw("Horizontal");
vInput = Input.GetAxisRaw("Vertical");
Movement(hInput, vInput);
}
void Movement(float hInput, float vInput)
{
if (hInput != 0f || vInput != 0f)
{
Rotate(hInput);
Movement(vInput);
}
}
void Movement(float vInput)
{
if(vInput == 1f)
{
//Move forward
GetComponent<Rigidbody>().AddForce(Vector3.forward * velocitySmooth * Time.deltaTime, ForceMode.VelocityChange);
}
if(vInput == -1f)
{
GetComponent<Rigidbody>().AddForce(Vector3.forward * velocitySmooth * Time.deltaTime, ForceMode.VelocityChange);
}
}
void Rotate(float Input)
{
//If rotating left
if (hInput == -1f)
{
transform.Rotate(-Vector3.up * rotateSmooth * Time.deltaTime);
}
if (hInput == 1f)
{
transform.Rotate(Vector3.up * rotateSmooth * Time.deltaTime);
}
}
}