Ограничение зоны действия moselook

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Ограничение зоны действия moselook

Сообщение yeah48rus 25 мар 2013, 11:32

Возник такой вопрос - можно ли как-то ограничить зону действия скрипта mouse look ? ну т.е. мне например надо , чтобы скрипт работал только когда я вожу мышкой в правой части экрана , соответственно , в левой части он не работает , можно ли как-то это реализовать? буду рад Вашей помощи
yeah48rus
UNец
 
Сообщения: 30
Зарегистрирован: 18 ноя 2012, 22:06

Re: Ограничение зоны действия moselook

Сообщение extravert 25 мар 2013, 12:04

Синтаксис:
Используется csharp
public static bool GetMyMouseLookFlag()

дальше сам :-w
Аватара пользователя
extravert
UNIверсал
 
Сообщения: 465
Зарегистрирован: 24 дек 2012, 11:54

Re: Ограничение зоны действия moselook

Сообщение yeah48rus 25 мар 2013, 12:41

а поподробнее как-то можно?
yeah48rus
UNец
 
Сообщения: 30
Зарегистрирован: 18 ноя 2012, 22:06

Re: Ограничение зоны действия moselook

Сообщение extravert 25 мар 2013, 13:21

да. оборачиваешь что тебе нужно в методе с необходимыми тебе вычислениями и используешь.
Например если тебе нужен Event.current.mousePosition ты так и пишешь
Синтаксис:
Используется csharp
return Event.current.mousePoisiton.x > 200;

В итоге вызов метода скажет так оно или не так.
Где нужно применяешь, получаешь лвлап.
Аватара пользователя
extravert
UNIверсал
 
Сообщения: 465
Зарегистрирован: 24 дек 2012, 11:54

Re: Ограничение зоны действия moselook

Сообщение extravert 25 мар 2013, 13:25

в целом самое забавное что никто кроме тебя твой MouseLook не читает, но ты делаешь из форумчанина медиума.
Если это он:
https://code.google.com/p/turbocars/sou ... &spec=svn2
то заместо
Синтаксис:
Используется csharp
else if (axes == RotationAxes.MouseX)

нужно просто использовать
Синтаксис:
Используется csharp
else if (axes == RotationAxes.MouseX && Input.GetAxis("Mouse X") > 0)
Аватара пользователя
extravert
UNIверсал
 
Сообщения: 465
Зарегистрирован: 24 дек 2012, 11:54

Re: Ограничение зоны действия moselook

Сообщение yeah48rus 25 мар 2013, 13:34

да, скрипт mouselook этот . вместо числа 0 в строке кода = else if (axes == RotationAxes.MouseX && Input.GetAxis("Mouse X") > 0) , ставится необходимый отступ, я так понимаю?
yeah48rus
UNец
 
Сообщения: 30
Зарегистрирован: 18 ноя 2012, 22:06

Re: Ограничение зоны действия moselook

Сообщение yeah48rus 25 мар 2013, 19:49

опробовал дополнение в деле , нет , это не то , что нужно .
у меня на сцене есть джойстик передвижения персонажа, но мне ещё необходимо вертеть камеру , посредством клика мыши по экрану . но когда я включаю скрипт mouselook , пытаясь двинуть джойстик , двигается и камера . т.е. мне и необходимо как-то обрезать зону действия на экране скрипта mouselook

Скрипт mouselook вот :

Синтаксис:
Используется javascript
public var areaAvailableRatio : Rect = new Rect(0, 0, 0.5, 1);
private var areaAvailable : Rect;
enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
var axes = RotationAxes.MouseXAndY;
var sensitivityX : float = 15;
var sensitivityY : float = 15;

var minimumX : float = -360;
var maximumX : float = 360;

var minimumY : float = -60;
var maximumY : float = 60;

var rotationX : float = 0;
var rotationY : float = 0;

private var originalRotation : Quaternion;

function Update () {
        if (axes == RotationAxes.MouseXAndY) {
           if(Input.GetMouseButton(0))
           {
           
           
                rotationX += Input.GetAxis("Mouse X") * sensitivityX;
                rotationY += Input.GetAxis("Mouse Y") * sensitivityY;

                rotationX = ClampAngle (rotationX, minimumX, maximumX);
                rotationY = ClampAngle (rotationY, minimumY, maximumY);
               
                var xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
                var yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
               
                transform.localRotation = originalRotation * xQuaternion * yQuaternion;
                }
        }
        else if (axes == RotationAxes.MouseX) {
           if(Input.GetMouseButton(0))
                {
                 
               
               
                rotationX += Input.GetAxis("Mouse X") * sensitivityX;
                rotationX = ClampAngle (rotationX, minimumX, maximumX);

                xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
                transform.localRotation = originalRotation * xQuaternion;
                }
        }
        else {
        if(Input.GetMouseButton(0))
          {
         
         
         
                rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
                rotationY = ClampAngle (rotationY, minimumY, maximumY);

                yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
                transform.localRotation = originalRotation * yQuaternion;
                }
        }
}

function Start () {

 
        if (rigidbody)
                rigidbody.freezeRotation = true;
        originalRotation = transform.localRotation;
}

static function ClampAngle (angle : float, min : float, max : float) : float {
        if (angle < -360.0)
                angle += 360.0;
        if (angle > 360.0)
                angle -= 360.0;
        return Mathf.Clamp (angle, min, max);
}
 
yeah48rus
UNец
 
Сообщения: 30
Зарегистрирован: 18 ноя 2012, 22:06


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 25