Я хочу разработать гоночную игру в 2D, используя акселерометр с Unity. Датчик заставит автомобиль вращаться влево или вправо, как показано на рисунке.
Когда я переворачиваю смартфон вправо, машина повернет направо, а когда я переворачиваю влево, машина поворачивает налево. Я использую датчик акселерометра, чтобы поворачивать машину, когда переворачиваю смартфон.
Мой код:
public class accel : MonoBehaviour
{
public MoveController mc;
void Update ()
{
transform.Translate(0,-Input.acceleration.x, 0);
if (Input.acceleration.x > 0) {
mc.degree -= 10;
mc.derajat-=10;
}
else if (Input.acceleration.x < -0) {
mc.degree += 10;
mc.derajat+=10;
}
else {
mc.degree += 0;
mc.derajat+= 0;
}
}
}
Класс MoveController:
using UnityEngine;
using System.Collections;
public class MoveController : MonoBehaviour {
public bool stop = false;
public enum ButtonList {left,right,forward,stop};
public float currspeed = 1.0f;
public float acceleration = 5f;
public float maxspeed = 12f;
public float degree = 10f;
public float derajat = 10f;
public bool jalan;
public Camera camera;
public SpriteRenderer redcar;
public float sudut;
public void setActiveStop() {
stop = true;
}
public void setUnactiveStop() {
stop = false;
}
public bool getStop() {
return stop;
}
public bool getNotStop() {
return !stop;
}
void Start () {
this.setUnactiveStop ();
jalan = false;
}
// Update is called once per frame
void Update () {
this.start_game ();
}
public void start_game() {
if (getNotStop()) {
redcar.transform.rotation=Quaternion.Euler(0,0,degree);
camera.transform.rotation=Quaternion.Euler(0,0,derajat);
sudut=redcar.transform.rotation.z;
redcar.transform.Translate((currspeed*Mathf.Cos(sudut*Mathf.PI/180))*1*Time.deltaTime,
(currspeed*Mathf.Sin(sudut*Mathf.PI/180))*1*Time.deltaTime,
0);
camera.transform.Translate((currspeed*Mathf.Cos(sudut*Mathf.PI/180))*1*Time.deltaTime,
(currspeed*Mathf.Sin(sudut*Mathf.PI/180))*1*Time.deltaTime,
0);
}
jalan = true;
}
}
Когда я строю и запускаю на своем смартфоне, машина не перестает вращаться, и ее вращение происходит слишком быстро. Я хочу изменить функцию Update
в первом коде, чтобы машина могла плавно вращаться/поворачиваться вправо-влево.
Итак, как это исправить?