В настоящее время я программирую игру, в которой игрок должен наклонить свой телефон, чтобы вращать мир, чтобы он мог перемещаться по лабиринту. Это трудно, так как, когда я поворачиваю телефон, спрайт улетает с экрана.
Я предполагаю, что это связано с силами между персонажем и коллайдерами мира, которые в конечном итоге запускают персонажа.
Однако я хочу, чтобы у персонажа была гравитация, следуя за игроками относительно направления вниз, чтобы, когда персонаж вращается, он падал в направлении своих ног.
Следовательно, как мне повернуть направление гравитации относительно направления спрайта и не дать игроку улететь при вращении?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GyroController : MonoBehaviour {
private Gyroscope Gyro ;
private float rotation;
private Vector3 startEulerAngles;
private Vector3 startGyroAttitudeToEuler;
public GameObject Player = null;
private void Awake () {
if (SystemInfo.supportsGyroscope) {
Gyro = Input.gyro;
Gyro.enabled = false;
startEulerAngles = transform.eulerAngles;
startGyroAttitudeToEuler = Input.gyro.attitude.eulerAngles;
Debug.Log("Gyro Enabled");
}
else {
Debug.Log("No Gyro Detected");
}
}
private void Update()
{
Vector3 deltaEulerAngles = Input.gyro.attitude.eulerAngles - startGyroAttitudeToEuler;
deltaEulerAngles.x = 0.0f;
deltaEulerAngles.y = 0.0f;
Player.transform.eulerAngles = startEulerAngles - deltaEulerAngles;
}
}
До сих пор я пробовал только один метод изменения направления гравитации, который включает перемещение центра тяжести, из-за которого персонаж только падал через другие коллайдеры. Следовательно, мой гравитационный код не включен в этот фрагмент.
Я не прошу код, который будет сделан для меня, просто направление для меня, чтобы заглянуть, как я попал в тупик с использованием Hardbody2D
Thankyou.