Hi, I’ve posted about this once a month ago and haven’t got any helpful responses so here I come again… My character can only move along set axis’ and I want to change it. I mean, when I press forward, it moves along z axis and I want it to move towards the direction of the camera. I’d really apreciate any kind of help… I’ve been stuck for ages. Here’s the character control script:
PlayerMovement
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 6f;
Vector3 movement;
Animator anim;
Rigidbody playerRigidbody;
int floorMask;
float camRayLenght = 100f;
void Awake()
{
floorMask = LayerMask.GetMask ("Floor");
anim = GetComponent<Animator>();
playerRigidbody = GetComponent<Rigidbody> ();
}
void FixedUpdate()
{
float h = Input.GetAxisRaw ("Horizontal");
float v = Input.GetAxisRaw ("Vertical");
Move (h, v);
Turning ();
Animating (h,v);
if(Input.GetButton("Vertical"))
{
transform.rotation = Quaternion.Euler(0,Camera.main.transform.eulerAngles.y,0);
}
else
{
transform.Rotate(0,Input.GetAxis("Horizontal") * v * Time.deltaTime, 0);
}
}
void Move (float h, float v)
{
movement.Set (h, 0f, v);
movement = movement.normalized * speed * Time.deltaTime;
playerRigidbody.MovePosition (transform.position + movement);
}
void Turning()
{
Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit floorHit;
if(Physics.Raycast (camRay, out floorHit, camRayLenght, floorMask))
{
Vector3 playerToMouse = floorHit.point - transform.position;
playerToMouse.y = 0f;
Quaternion newRotation = Quaternion.LookRotation (playerToMouse);
playerRigidbody.MoveRotation (newRotation);
}
}
void Animating(float h, float v)
{
bool walking = h != 0f || v != 0f;
anim.SetBool ("IsWalking", walking);
bool slide = Input.GetButton("Jump");
anim.SetBool ("Sliding", slide);
}
}
Thank you for your time.