Проблема: Есть Joystick управляющий персонажем и скрипт вращающий камеру вокруг персонажа, при использовании Joystick камера начинает вращаться. Вопрос: Как сделать что бы при использовании Joystic камера не вращалась?
Что-то наподобие различных слоёв, или как ограничить область работы скрипта по вращению камеры?
Вот скрипт:
Код
using System.Collections;
[AddComponentMenu("Camera-Control/Touch Look")] public class TouchLook : MonoBehaviour {
public float sensitivityX = 5.0f; public float sensitivityY = 5.0f;
public bool invertX = false; public bool invertY = false;
// Use this for initialization void Start () {
}
// Update is called once per frame void Update () { if (Input.touches.Length > 0) { if (Input.touches[0].phase == TouchPhase.Moved) { Vector2 delta = Input.touches[0].deltaPosition; float rotationZ = delta.x * sensitivityX * Time.deltaTime; rotationZ = invertX ? rotationZ : rotationZ * -1; float rotationX = delta.y * sensitivityY * Time.deltaTime; rotationX = invertY ? rotationX : rotationX * -1;
transform.localEulerAngles += new Vector3(rotationX, rotationZ, 0); } } } }
вешай джойстику tag ( например, "myJoystick") или используй существующий, если есть. выпускай лучи из центра камеры в точку касания пальцем через RayCast. проверяй: если не попали в джойстик, то выполняй все, что стоит в if (Input.touches[0].phase == TouchPhase.Moved){...}
как-то так:
using System.Collections;
[AddComponentMenu("Camera-Control/Touch Look")] public class TouchLook : MonoBehaviour {
public float sensitivityX = 5.0f; public float sensitivityY = 5.0f;
public bool invertX = false; public bool invertY = false;
public Ray ray;//added public RaycastHit hit;//added
// Use this for initialization void Start () {
}
// Update is called once per frame void Update () { if (Input.touches.Length > 0) {
P.S. кусками прочитал твое первое сообщение в первый раз http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer