Check out the finished code below the videos
- 0:45 - Scene explaination and script planning
- 1:45 - Starting the script, setting up variables and our function
- 3:07 - Explaination of Euler Angles in Unity
- 4:18 - Calculating our camera's pitch and yaw rotations
- 5:58 - Working Demonstration in game
- 6:30 - Invert look option
- 7:55 - Limiting the up and down look rotation with Mathf.Clamp
- 9:05 - Demonstration of clamped rotation
- 9:25 - Using our script to rotate any game object
- 10:05 - Setting up a Touchpad area on screen to limit the area you can use to rotate the camera
- 13:13 - Outro - Describing Part 2 of our FPS controller where we'll make a joystick to control the player movement
Check out the videos above to hear the explanation and see the code in action
/*/
* Script by Devin Curry
* www.Devination.com
* www.youtube.com/user/curryboy001
* Please like and subscribe if you found my tutorials helpful :D
* Twitter: https://twitter.com/Devination3D
/*/
using UnityEngine;
using System.Collections;
public class SwipeRotationPlayer : TouchLogicV2//NOTE: This script has been updated to V2 after video recording
{
public float rotateSpeed = 100.0f;
public int invertPitch = 1;
public Transform player;
private float pitch = 0.0f,
yaw = 0.0f;
//cache initial rotation of player so pitch and yaw don't reset to 0 before rotating
private Vector3 oRotation;
void Start()
{
//cache original rotation of player so pitch and yaw don't reset to 0 before rotating
oRotation = player.eulerAngles;
pitch = oRotation.x;
yaw = oRotation.y;
}
public override void OnTouchBegan()
{
//need to cache the touch index that started on the pad so others wont interfere
touch2Watch = TouchLogicV2.currTouch;
}
public override void OnTouchMoved()
{
pitch -= Input.GetTouch(touch2Watch).deltaPosition.y * rotateSpeed * invertPitch * Time.deltaTime;
yaw += Input.GetTouch(touch2Watch).deltaPosition.x * rotateSpeed * invertPitch * Time.deltaTime;
//limit so we dont do backflips
pitch = Mathf.Clamp(pitch, -80, 80);
//do the rotations of our camera
player.eulerAngles = new Vector3 ( pitch, yaw, 0.0f);
}
public override void OnTouchEndedAnywhere()
{
//the || condition is a failsafe
if(TouchLogicV2.currTouch == touch2Watch || Input.touches.Length <= 0)
touch2Watch = 64;
}
}