Third Person Controller moving in direction of camera
Hey I wondered if someone could help me. Basically i'm creating a third person game using a game pad and would like the character to rotate and move in the direction of the camera. The sort of result i'm looking for is very similar to necropolis if anyone has played that game before. Here is my script below, I've aerial control working I just need to have the player rotate and move in the direction of the camera.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class arialcontrol : MonoBehaviour {
private Vector3 playerpos;
private Rigidbody rb;
private Camera theCamera;
[SerializeField]
float jumpForce;
private bool isonfloor;
public float smooth;
public float speed;
public float jumpSpeed;
public float gravity;
private Vector3 moveDirection = Vector3.zero;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody>();
//Find camera
theCamera = Camera.main;
Cursor.visible = !Cursor.visible;
Cursor.lockState = CursorLockMode.Locked;
bool xbox_a = Input.GetButton("XboxA");
}
// Update is called once per frame
void Update()
{
//turn off cursor
if (Input.GetKeyDown(KeyCode.P))
{
Cursor.visible = !Cursor.visible;
if (Cursor.lockState == CursorLockMode.None)
{
Cursor.lockState = CursorLockMode.Locked;
}
else
{
Cursor.lockState = CursorLockMode.None;
}
}
CharacterController controller = GetComponent<CharacterController>();
if (controller.isGrounded)
{
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
//moveDirection.x = Input.GetAxis("Horizontal") * speed;
//moveDirection.z = Input.GetAxis("Vertical") * speed;
//_moveDirection = transform.forward * _moveDirection.magnitude;
moveDirection *= speed;
if (Input.GetButtonDown("XboxA") || Input.GetKey(KeyCode.Space))
moveDirection.y = jumpSpeed;
//
//float y = moveDirection.y;
speed = 5;
}
else if (controller.isGrounded == false)
{
moveDirection.x = Input.GetAxis("Horizontal") * speed;
moveDirection.z = Input.GetAxis("Vertical") * speed;
//moveDirection = transform.TransformDirection(moveDirection);
speed = 3;
}
//moveDirection *= speed;
print("JumpMove:" + moveDirection.y + "Move:" + moveDirection.x);
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
rb.MovePosition(playerpos);
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612153629im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Help with the third person controller script 0 Answers
Creating animations using first person controller 1 Answer
Invector Multiplayer Photon 0 Answers
Thirdperson camera follow ball 1 Answer
Head-looking asset on third person? 0 Answers