LINUX.ORG.RU

Unity 3d - написать управление как в Tilt maze

 


0

1

Не дойдет до меня, как написать (на C# в движке Unity 3d) движение шарика как в игре tilt maze (Рус. Лабиринт), для андроида, используя акселерометр...
Так:

float force = 10.0f;
void Update() {
Vector3 dir = Vector3.zero;
dir.x = -Input.acceleration.y;
dir.z = Input.acceleration.x;
if (dir.sqrMagnitude > 1) dir.Normalize();
rigidbody.AddForce(dir.x*force,0,dir.z*force,ForceMode.Force);
}
слишком медленно, и не важно сколько force прибавляешь.



Последнее исправление: Bacteriophage (всего исправлений: 3)

Не знаю ничего про юнити, но не вижу, где вы учитываете dt (время предыдущего кадра).

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

где вы учитываете dt

Как я понимаю, он просто добавляет действующую на тело силу, пропорциональную показаниям акселерометра, а dt должен учитывать солвер, который эту силу превратит в ускорение и посчитает новую скорость и позицию тела для следующего кадра. Но с юнити я не знаком, поэтому понятия не имею, почему оно не работает.

ddos3
()
4 июля 2015 г.

Акселерацию добавь для своего объекта

public class PlayerController : MonoBehaviour {

public int acceleration; public float force = 10.0f; // Update is called once per frame void Update () {

Vector3 dir = Vector3.zero; dir.x = Input.acceleration.x; dir.y = Input.acceleration.y; //dir.z = Input.acceleration.z; if (dir.sqrMagnitude > 1) dir.Normalize(); dir *= Time.deltaTime; GetComponent<Rigidbody>().AddForce((dir.x*force)*acceleration,(dir.y*force)*acceleration,0,ForceMode.Force);

......

draobrehtom
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.