// ---------------------------------------------------------------------------- // // Photon Voice Demo for PUN- Copyright (C) 2016 Exit Games GmbH // // // Custom fist person character controller. // // developer@photonengine.com // ---------------------------------------------------------------------------- namespace ExitGames.Demos.DemoPunVoice { using UnityEngine; public class FirstPersonController : BaseController { [SerializeField] private MouseLookHelper mouseLook = new MouseLookHelper(); private float oldYRotation; private Quaternion velRotation; public Vector3 Velocity { get { return this.rigidBody.velocity; } } protected override void SetCamera() { base.SetCamera(); this.mouseLook.Init(this.transform, this.camTrans); } protected override void Move(float h, float v) { // always move along the camera forward as it is the direction that it being aimed at Vector3 desiredMove = this.camTrans.forward * v + this.camTrans.right * h; desiredMove.x = desiredMove.x * this.speed; desiredMove.z = desiredMove.z * this.speed; desiredMove.y = 0; this.rigidBody.velocity = desiredMove; } private void Update() { this.RotateView(); } private void RotateView() { // get the rotation before it's changed this.oldYRotation = this.transform.eulerAngles.y; this.mouseLook.LookRotation(this.transform, this.camTrans); // Rotate the rigidbody velocity to match the new direction that the character is looking this.velRotation = Quaternion.AngleAxis(this.transform.eulerAngles.y - this.oldYRotation, Vector3.up); this.rigidBody.velocity = this.velRotation * this.rigidBody.velocity; } } }