- Home /
Question by
Tubestorm · May 18, 2020 at 02:04 PM ·
c#controllercamera rotatetouch controlsswipe
How to create a Touch Pad to control camera rotation
Hey!
I'm working on mobile game, in unity. I'm having some issues with the camera, I want the camera to rotate only in the yellow field, in the image below. does anyone know how i can do this.
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine;
public class Swiper : MonoBehaviour
{
public static Swiper instance;
private Touch initTouch = new Touch();
public Camera cam;
private float rotX = 0f;
private float rotY = 0f;
private Vector3 origRot;
public float rotSpeed = 0.5f;
public float dir = -1;
// Start is called before the first frame update
void Start()
{
instance = this;
origRot = cam.transform.eulerAngles;
rotX = origRot.x;
rotY = origRot.y;
}
// Update is called once per frame
void FixedUpdate()
{
foreach (Touch touch in Input.touches)
{
if (touch.phase == TouchPhase.Began)
{
initTouch = touch;
}
else if (touch.phase == TouchPhase.Moved)
{
//swiping
float deltaX = initTouch.position.x - touch.position.x;
float deltaY = initTouch.position.y - touch.position.y;
rotX -= deltaY * Time.deltaTime * rotSpeed * dir;
rotY += deltaX * Time.deltaTime * rotSpeed * dir;
rotX = Mathf.Clamp(rotX, -20f, 20f);
rotY = Mathf.Clamp(rotY, -20f, 20f);
WorldInteraction.instance.rigidbody.transform.localEulerAngles = new Vector3(0, rotY, 0);
cam.transform.eulerAngles = new Vector3(rotX, rotY, 0f);
}
else if (touch.phase == TouchPhase.Ended)
{
initTouch = new Touch();
}
}
}
}
screen-shot-2020-05-18-at-100236-am.png
(230.0 kB)
Comment