【问题标题】:Third Person Controller Movement第三人称控制器运动
【发布时间】:2016-03-04 07:25:47
【问题描述】:

我正在使用来自资产商店的相当复杂和全面的第三人称控制器包。 https://www.assetstore.unity3d.com/en/#!/content/27438

我需要在控制器中更改这一行(或者可能添加新代码),以使角色在按下前进键时朝着角色所面对的方向移动。

这是默认线,但角色相对于相机移动而不是独立移动:

m_LookRotation = m_CameraTransform.rotation;

接下来是建议替换该行以实现目标的行:

m_LookRotation = Quaternion.Euler(PlayerInput.GetAxisRaw(Constants.YawInputName), 0, 0);

但是,由于该行替换了原来的行,前进键会导致角色朝一个特定方向移动,而不管他面向哪个方向。示例:如果我向右转,然后按前进键,角色会在前进前转回原来的方向。

[这里是完整的控制器脚本: https://docs.google.com/document/d/1B4sstqtCqRMCLuHuxEuA9I7tO_3W4aHqEZwr73uFDjY/edit?pref=2&pli=1]

【问题讨论】:

    标签: c# unity3d unity5 unity3d-5


    【解决方案1】:

    您可以将字符的旋转与前向向量相乘,即:

    Vector3 targetForward = characterRotation * Vector3.forward;
    

    【讨论】:

    • 感谢您的回复。在我提供的完整代码中,我应该在哪里放置该行而不破坏某些内容,因为包相当复杂并且有许多部件/脚本/等。
    • @Xeritan 在 Update() 或 FixedUpdate() 中,在将移动向量应用于玩家之前,然后将 targetForward 向量应用于角色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多