Среда, 27 Ноября 2024, 03:02

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Touch Camera Controller
GreexonДата: Понедельник, 28 Июля 2014, 21:09 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Проблема:
Есть Joystick управляющий персонажем и скрипт вращающий камеру вокруг персонажа, при использовании Joystick камера начинает вращаться.
Вопрос:
Как сделать что бы при использовании Joystic камера не вращалась?

Что-то наподобие различных слоёв, или как ограничить область работы скрипта по вращению камеры?

Вот скрипт:

MANMANAДата: Понедельник, 28 Июля 2014, 21:59 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
rotation в переводе с английского - вращение
удали все, что относится к вращению

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);


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GreexonДата: Вторник, 29 Июля 2014, 12:12 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Камера и должна поворачиваться, но только если я нажимаю в область экрана свободную от элементов управления.
allodsДата: Вторник, 29 Июля 2014, 12:46 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
создать флаг
camRot=false;
и крутить камеру только тогда когда будет true

И засунуть код с кручением под if(camRot==true). Если вам это не понятно иди читайте мануалы и напишите свой код с Блэкджеком и дамами
MANMANAДата: Вторник, 29 Июля 2014, 13:42 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
вешай джойстику 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)
{

if (Input.touches[0].phase == TouchPhase.Moved)
{
Touch touch = Input.GetTouch(0);//added
ray = Camera.main.ScreenPointToRay(touch.position);//added
if(hit.transform.tag != "myJoystick") //added
{
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);
} //added

}

}
}
}

P.S. кусками прочитал твое первое сообщение в первый раз


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Вторник, 29 Июля 2014, 13:46
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг