using UnityEngine;
using System.Collections;
using TNet;
public class FirstPersonController : TNBehaviour {
private Camera fpsCamera;
private Camera thirdPersonCamera;
private bool firstPerson = true;
public float movementSpeed = 3.0f;
public float mouseSensitivity = 6.0f;
float verticalRot = 0;
private float UpDownRange = 60.0f;
CharacterController cc;
TNObject tno;
void Awake() {
if(TNManager.isThisMyObject) {
tno = this.GetComponent<TNObject>();
}
else this.enabled = false;
}
// Use this for initialization
void Start () {
if(tno.isMine) {
Screen.lockCursor = true;
cc = GetComponent<CharacterController>();
fpsCamera = GameObject.Find("firstPersonCam").camera;
thirdPersonCamera = GameObject.Find("thirdPersonCam").camera;
fpsCamera.enabled = true;
thirdPersonCamera.enabled = false;
firstPerson = true;
}
}
void OnNetworkPlayerLeft(Player p) {
TNManager.Destroy(gameObject);
}
void OnNetworkDisconnect() {
if(tno.isMine) {
TNManager.Destroy(gameObject);
TNManager.Destroy(tno);
}
}
void Update () {
if(!tno.isMine) {
this.enabled = false;
}
if(tno.isMine) {
// CHANGE CAMERA PERSPECTIVE
if(Input.GetButtonDown("Change Camera")) {
if(firstPerson == true) {
thirdPersonCamera.transform.position = Vector3.Lerp(thirdPersonCamera.transform.position, transform.FindChild("ThirdPersonPoint").position, 5.0f);
thirdPersonCamera.transform.rotation = transform.FindChild("ThirdPersonPoint").rotation;
fpsCamera.enabled = false;
thirdPersonCamera.enabled = true;
firstPerson = false;
}
else {
fpsCamera.transform.position = Vector3.Lerp(fpsCamera.transform.position, transform.FindChild("FirstPersonPoint").position, 5.0f);
fpsCamera.transform.rotation = transform.FindChild("FirstPersonPoint").rotation;
fpsCamera.enabled = true;
thirdPersonCamera.enabled = false;
firstPerson = true;
}
}
// ROTATION
float rotUpDown = Input.GetAxis("Mouse Y") * mouseSensitivity;
float rotLeftRight = Input.GetAxis("Mouse X") * mouseSensitivity;
transform.Rotate(0, rotLeftRight, 0);
verticalRot -= Input.GetAxis("Mouse Y") * mouseSensitivity;
if(firstPerson == true) {
UpDownRange = 60.0f;
}
else {
UpDownRange = 30.0f;
}
verticalRot = Mathf.Clamp(verticalRot, -UpDownRange, UpDownRange);
if(firstPerson == true) {
fpsCamera.transform.localRotation = Quaternion.Euler(verticalRot, 0, 0);
}
else {
thirdPersonCamera.transform.localRotation = Quaternion.Euler(verticalRot, 0, 0);
}
// MOVEMENT
float forwardSpeed = Input.GetAxis("Vertical") * movementSpeed;
float sideSpeed = Input.GetAxis("Horizontal") * movementSpeed;
float jumpHeight = 2.0f;
bool jump = Input.GetButtonDown("Jump");
if(jump) {
cc
.Move(new Vector3
(0, jumpHeight,
0)); }
Vector3 speed
= new Vector3
(sideSpeed,
0, forwardSpeed
); // 1st: L/R, 2nd: Up/Dwn, 3rd: Fwd/Bk
speed = transform.rotation * speed;
if(Input.GetMouseButton(1)) { // MOUSE BUTTON 2
}
cc.SimpleMove(speed);
}
else this.enabled = false;
}
}