блин чет не пойму все равно,по идее должно работать но не пашет в моем скрипте:
1.Скрипт описывает что то типо самолета парящего над поверхностью земли
2.При нажатии на Гуй текстуру включить нитроускорение
Скрипты делал на основе туторов Penelope и StarTrooper.
Косяки при запуске под Android v.3:
1.Когда включена гравитация акселерометр не действует,без гравитации работает.
2.При нажатии на гуй текстуру подвисает и потом при дальнейших нажатиях вообще нету реакции.
Доп вопросы:
1.Непойму самой логиги поворота на кватернионах,первые 3 значения массива это x,y,z а что значит 4я?
2.public GUITexture guiNitroElement; - сделал публичной и перетянул на него в инспекторе GameObject( с прикрепленной GUITexture),правильно ли это? или как то по другому производится поиск ГУЙ Текстуры в сцене.
3.Каким гуем лучше пользоваться для афона или Андроида? Стандартным или использовать плагины типо eGui и др?
Может стандартный Gui просто не очень дружит с сенсорниками?
скриншот:
Используется csharp
using UnityEngine;
using System.Collections;
public class PlayerControls : MonoBehaviour {
public float speed = 1.0F; // скорочть умножается на guiSpeedElement
public float nitro = 50.0F; // ускорение
public float sensitivity = 10.0F; // чувствительность акселерометра
public float forwardForce = 1.0F; // движущая сила,регит боди
//public GUIText text;
public GUITexture guiNitroElement; // кнопка нитро
bool horizontalOrientation = true;
private Vector3 euler = Vector3.zero; // наклон при повороте
void Start () {
Screen.orientation = ScreenOrientation.LandscapeLeft;
guiNitroElement = GetComponent<GUITexture>();
}
// нажитие кнопки нитроускорения + запуск фильтра MoushenBlur при ускорении
/*void Update () {
int count = Input.touchCount;
for(int i = 0 ; i < count ; i++){
Touch touch = Input.GetTouch(i);
if (guiNitroElement.HitTest(touch.position)){
speed = forwardForce*speed*nitro;
// как запустить фильтр моушен блюр?
}
}
}*/
void Update ()
{
foreach (Touch touch in Input.touches)
{
if( guiNitroElement.HitTest(touch.position)) {
speed = forwardForce*speed*nitro;
}
}
}
void FixedUpdate () {
rigidbody.AddRelativeForce(0, 0, speed * forwardForce);
Vector3 accelerator = Input.acceleration;
if (horizontalOrientation){
float t = accelerator.x;
accelerator.x = -accelerator.y;
accelerator.y = t;
}
// Rotate turn based on acceleration
euler.y += accelerator.x * speed;
euler.z = Mathf.Lerp(euler.z, -accelerator.x * speed, 0.2F);
// Since we set absolute lean position, do some extra smoothing on it
euler.x = Mathf.Lerp(euler.x, accelerator.y * speed, 0.2F);
Quaternion rot = Quaternion.Euler(euler);
transform.rotation = Quaternion.Lerp (transform.rotation, rot, sensitivity);
}
}