我目前正在编写一个游戏,玩家必须倾斜手机来旋转世界,这样他们才能在迷宫中导航。事实证明这很困难,因为当我旋转手机时,精灵会飞出屏幕。我假设这与最终启动角色的角色和世界对撞机之间的力量有关。但是,我希望角色的重力跟随玩家的相对向下方向,这样当角色旋转时,它会沿着脚的方向下降。
因此,我应该如何将重力方向旋转到相对于精灵的方向并防止玩家在旋转时飞走?
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;
}
}
到目前为止,我只尝试了一种改变重力方向的方法,该方法涉及移动重心,这只会使角色从其他对撞机中坠落。因此,我的重力代码不包含在此代码段中。
我不是要求为我制作代码,只是我的一个方向,因为我已经使用rigidbody2d 遇到了死胡同
谢谢你。