我正在考虑使用C#在Unity中开发游戏 游戏将采用陀螺仪方向,并相应于手机旋转的方向旋转。
我很好奇这是如何工作的,我知道我将如何读取和更新陀螺仪的方向,但是我不确定如何将其分配给旋转的世界。世界上将会有一个玩家,这将是下一个挑战,以防止玩家旋转时穿越世界。 因此,世界应该围绕玩家当前位置旋转。
我目前没有设计此代码的代码,但是我无法理解如何使此代码有效的逻辑
谢谢
答案 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);
}
}
此脚本将附加到播放器上。