旋转时Unity Sprite飞离地图

时间:2019-01-15 14:19:39

标签: c# unity3d rigid-bodies

我目前正在编写一个游戏,玩家必须倾斜手机以旋转世界,以便他们可以在迷宫中导航。事实证明这很困难,因为当我旋转手机时,精灵会飞出屏幕。 我认为这与角色和世界的对撞机之间的力量有关,最终导致了角色的发射。 但是,我希望角色使重力跟随玩家的相对向下方向,以便角色旋转时跌落到脚的方向。

因此,我应该如何旋转重力方向以相对于精灵的方向,并防止播放器在旋转时飞走?

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;
    }
}

到目前为止,我只尝试了一种改变重心方向的方法,该方法涉及移动重心,这只会使角色跌落通过其他对撞机。因此,我的重力代码未包含在此代码段中。

我并不是要为我编写代码,而只是要求我寻找一个方向,因为我已经死于僵化了。

谢谢。

0 个答案:

没有答案