Показать сообщение отдельно
Старый 08.07.2012, 19:25   #1
DeKon
AnyKey`щик
 
Аватар для DeKon
 
Регистрация: 08.07.2012
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Связь с акселерометром

Здравствуйте! Возникла необходимость написать простенькое приложение на андройд. Решил использовать Юнити. Нужно лишь зависимость камеры от акселерометра, двигаться не надо. Сам я не владею ни С++ ни Ява скриптом (знаком только с паскалем ) из-за этого возникают проблемы. На сайте Юнити нашел инфу, как сделать связь с акс.
Возникли две проблемы:
1) Начальная позиция на оси Х - телефон параллелен полу, а мне нужно, что бы начальная позиция была когда телефон перпендикулярен полу. Перепробовал разные способы, которые смог придумать, но при них камера просто постоянно крутилась по оси Х
2) Так как я двигаю телефон только по осям Х и У, мне и нужно получить в итоге движение по ним. Камера отлично слушается, но почему то начинает крутиться и по оси Z. Никак не могу заморозить этот параметр.
Скрипт и скриншот прилагаются, просьба сильно тапками не бить за извращенные методы.

// Move object using accelerometer
var speed = 10;
var dir : Vector3 = Vector3.zero;

function Update () {


// we assume that device is held parallel to the ground
// and Home button is in the right hand

// remap device acceleration axis to game coordinates:
// 1) XY plane of the device is mapped onto XZ plane
// 2) rotated 90 degrees around Y axis



dir.x = Input.acceleration.x;
dir.y = -Input.acceleration.y;




// clamp acceleration vector to unit sphere
if (dir.sqrMagnitude > 1)
dir.Normalize();

// Make it move 10 meters per second instead of 10 meters per frame...
dir *= Time.deltaTime;

// Move object


transform.Rotate (dir * speed * 10);


}


(Offline)
 
Ответить с цитированием