【问题标题】:Change playerCharacter's facing direction in Unity3D在 Unity3D 中更改 playerCharacter 的朝向
【发布时间】:2016-06-26 01:19:00
【问题描述】:

我正在尝试(出于学习目的)制作 Portal 游戏。我有基本的工作,我可以放置两个门户,在一个对撞机内行走让我传送到另一个,但我似乎无法让朝向/旋转工作。 我想在传送后从新的传送门面朝外。

我尝试了以下方法,但没有成功: var angle = thisPortalCamera.transform.rotation.eulerAngles.y - otherPortalCamera.transform.rotation.eulerAngles.y; playerChar.transform.Rotate(Vector3.up, angle);

我的想法是只有 y 轴旋转才是真正重要的,我认为我应该通过两个门户之间的轴差来旋转玩家。这可能真的很简单,但我对 Unity 还是很陌生。有什么建议吗?

【问题讨论】:

    标签: unity3d rotation unityscript


    【解决方案1】:

    最简单的方法是设置您的传送门,使其前进方向是您希望玩家拥有的方向。然后你就去:

    player.transform.rotation = portal.transform.rotation;
    player.transform.position = portal.transform.position;
    

    目的是让门户的蓝色箭头指向正确的方向。

    【讨论】:

      【解决方案2】:

      最简单的方法之一是使用函数 LookAt() 和 Rotate() 进行变换。此函数采用一个参数,即对象必须查看的位置。

      transform.LookAt(portal.position);
      tranform.Rotate(new Vector3(0,180,0);
      

      这将使您的角色面向与您的门户相反的方向。

      【讨论】:

      • 我现在已经尝试了我在这里得到的两个建议,我可以看到它们应该可以工作,但有些地方出了问题,因为角色在穿过传送门后仍然总是面向同一个方向以前做过。我使用的是标准的 FPSController 角色,你知道改变旋转是否有任何限制(假设也是由鼠标移动控制的)
      • 嗯,你有没有改变角色方向的动画?
      • 我对玩家角色的唯一改变是我添加了一个用于投掷传送门的脚本。
      • 嗯我不知道,听起来你的播放器对象有问题,但我不太确定
      • 我在与位置更改相同的 if 语句中包含旋转更改代码,因此应该运行它,如果我将要旋转的对象更改为另一个门户,它会旋转它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多