You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

76 lines
1.9 KiB

using UnityEngine;
using System.Collections;
public class thirdPersonController : MonoBehaviour {
public string CAMERA_INPUT_X;
public string CAMERA_INPUT_Y;
public string MOVEMENT_INPUT_X;
public string MOVEMENT_INPUT_Y;
public string JUMP_INPUT;
public Camera camera;
public GameObject cameraCentre;
public float cameraSpeedX = 250.0f;
public float cameraSpeedY = 120.0f;
public float cameraDistance = 10.0f;
public float movementSpeed;
public float jumpHeight;
private float cameraX;
private float cameraY;
private float movementX;
private float movementY;
// Use this for initialization
void Start () {
cameraX = camera.transform.eulerAngles.x;
cameraY = camera.transform.eulerAngles.y;
}
void FixedUpdate(){
movementX = Input.GetAxis (MOVEMENT_INPUT_X);
movementY = Input.GetAxis (MOVEMENT_INPUT_Y);
Vector3 velocity = new Vector3 (movementX, 0.0f, movementY)* movementSpeed * Time.deltaTime;
//Debug.Log (velocity);
velocity = Quaternion.Euler (0.0f,camera.transform.rotation.eulerAngles.y, 0.0f) * velocity;
GetComponent<Rigidbody>().AddForce (velocity);
//if (velocity != Vector3.zero)
transform.rotation = Quaternion.Euler(new Vector3 (0.0f, camera.transform.rotation.eulerAngles.y, 0.0f));
if (Physics.Raycast (transform.position, -Vector3.up, 1.3f)) {
//print ("Raycast succeeded");
if (Input.GetButtonDown (JUMP_INPUT)) {
GetComponent<Rigidbody>().AddRelativeForce (0, jumpHeight, 0);
}
}
}
// Update is called once per frame
void LateUpdate () {
cameraX += Input.GetAxis(CAMERA_INPUT_X) * cameraSpeedX * 0.02f;
cameraY += Input.GetAxis(CAMERA_INPUT_Y) * cameraSpeedY * 0.02f;
Quaternion cameraRotation = Quaternion.Euler (cameraY, cameraX, 0.0f);
Vector3 cameraPosition = cameraRotation * new Vector3(0.0f, 0.0f, -cameraDistance) + cameraCentre.transform.position;
camera.transform.rotation = cameraRotation;
camera.transform.position = cameraPosition;
}
}