【问题标题】:Rotating 2D world within Unity在 Unity 中旋转 2D 世界
【发布时间】:2018-10-10 13:18:38
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: c# unity3d vector game-physics


    【解决方案1】:

    如果我的目标正确,我想像在拳头游戏中那样旋转相机就足够了,而且比在保持玩家静止的同时旋转整个世界要简单得多。

    【讨论】:

      【解决方案2】:

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

      此脚本将附加到播放器。

      【讨论】:

      • 抱歉回复晚了。我还没有尝试过,但这种方法的理论似乎是正确的,而且做起来更明智。在此之后,我要旋转世界的原因是重力始终朝向屏幕的底部水平轴。因此,是否可以将刚体内的重力方向定向为例如跟随屏幕底部?
      • @Roodolpha 您可以根据角色向下的方向统一修改重力。
      猜你喜欢
      • 2023-04-04
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多