Cześć, robię prosty port tej gry (LINK), na telefon. Chce dodawać z czasem nowe funkcje i dodatki. Problem pojawia się przy kalibracji akcelerometru.
Uznałem na samym początku, że odejmę od aktualnej wartości, wartość początkową. To działa, ale ma niestety złe skutki. Unity odczytuje wartości z akcelerometru od 1 do -1. (zakładam, że wartość początkowa wynosi (0,0,0.5) Gdy wartości wynoszą (1,0,-1) i odejmę to wychodzi (1,0, -0,5) przez co kulka jest o połowę za wolna, gdy dam w przeciwną stronę, to jest o połowa za szybka.
Nie wiem jak to rozwiązać.... Pod spodem dałem skrypt.
using UnityEngine;
using System.Collections;
public class Move : MonoBehaviour {
private Rigidbody rb;
public float speed = 100;
private float moveX;
private float moveY;
private float moveXs;
private float moveYs;
private Vector3 movement;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody>();
moveXs = Input.acceleration.x;
moveYs = Input.acceleration.y;
}
// Update is called once per frame
void Update () {
moveX = (Input.acceleration.x - moveXs);
moveY = (Input.acceleration.y - moveYs);
movement = new Vector3 (moveX, 0.0f, moveY);
Debug.Log (movement);
rb.AddForce (movement * speed);
}
}