在 Unity 中旋转 2D 世界

Rotating 2D world within Unity

我正在考虑使用 C# 在 Unity 中开发游戏 游戏将采用陀螺仪方向并根据 phone 旋转的方向进行旋转。

我很好奇这是如何工作的,我知道我将如何读取和更新陀螺仪方向,但是我不确定如何将其分配给要旋转的世界。世界上会有一个玩家,这将是下一个挑战,以防止玩家在旋转时穿过世界。 因此世界应该围绕玩家当前位置旋转。

我目前没有代码,因为我正在设计这个,但是我无法在脑海中理解如何使它工作的逻辑

谢谢

如果我没弄错 objective,我想像在拳头游戏中那样旋转镜头应该就足够了,而且比旋转整个世界同时让玩家保持静止要简单得多。

这就是我的做法,首先我不会旋转世界,因为有很多对象要旋转,但如果你真的想要,你可以将整个世界设置为单个游戏对象,然后围绕玩家位置的轴旋转该对象(参见:https://docs.unity3d.com/ScriptReference/Transform.RotateAround.html)。

最简单的方法是将主摄像头连接到播放器(将其拖放到层次结构中的播放器对象上),然后旋转播放器。

例如,您可以在没有陀螺仪的情况下在您的机器上进行测试:

using UnityEngine;

public class rotatorScript: MonoBehaviour {
    void Update() {
        // Will Rotate based off of left/right arrows
        float rotator = -Input.GetAxisRaw("Horizontal");
        // Move up or down based off of up/down Arrows
        float verticalDirection = Input.GetAxisRaw("Vertical");
        // Do the actual movement... using space.self so it is based on the player not the world.
        transform.Translate(Vector3.up * verticalDirection * Time.deltaTime * 5f, Space.self);
        transform.Rotate(0f,0f,90f * Time.deltaTime * rotator); 
    }
}

此脚本将附加到播放器。