在Unity中旋转2D世界

时间:2018-10-10 13:18:38

标签: c# unity3d vector game-physics

我正在考虑使用C#在Unity中开发游戏 游戏将采用陀螺仪方向,并相应于手机旋转的方向旋转。

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

我目前没有设计此代码的代码,但是我无法理解如何使此代码有效的逻辑

谢谢

2 个答案:

答案 0 :(得分:0)

如果我的目标正确的话,我猜想像在“拳头游戏”中那样旋转摄像机就足够了,并且比在保持玩家静止的情况下旋转整个世界要简单得多。

答案 1 :(得分:0)

这就是我要做的事情,首先,我不会旋转世界,因为那是很多要旋转的对象,但是如果您真的想,可以将整个世界作为一个游戏对象的父对象,然后围绕玩家的位置绕轴旋转该对象(请参见: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); 
    }
}

此脚本将附加到播放器上。