Unity 3D - 使用刚体的第三人称角色移动

Posted

技术标签:

【中文标题】Unity 3D - 使用刚体的第三人称角色移动【英文标题】:Unity 3D - Third Person character movement using rigidbody 【发布时间】:2016-08-31 17:46:39 【问题描述】:

我是 Unity 的新手,正在尝试制作我的第一款游戏(第三人称射击游戏)。 一个多星期以来,我一次又一次地尝试使用刚体组件而不是角色控制器或简单的 transform.Translate 来让我的角色移动。

自从一周浏览有关它的主题以来,我打开了大约 30 个网页,但我没有找到任何东西(几乎让我觉得我正在尝试做一些不可能的事情,哈哈……)。

所以,我想像在细胞分裂黑名单中一样移动我的角色,并让带有十字准线的相机由鼠标控制(如果我射击,角色会在不面向目标的情况下旋转然后射击)。

对于运动,如果用刚体做不到,那我就用其他的一个,只是我喜欢刚体的真实感觉。

如果甚至有一个教程可以将其分解以真正理解,那就太好了,或者只是一些带有 cmets 的代码(我有 C# 背景)。

float moveSpeed = 6f;            // Player's speed when walking.
float rotationSpeed = 6f;
float jumpHeight = 10f;         // How high Player jumps

Vector3 moveDirection;

Rigidbody rb;

// Using the Awake function to set the references
void Awake()

    rb = GetComponent<Rigidbody>();


void FixedUpdate()

    Move();


void Move ()

    float hAxis = Input.GetAxis("Horizontal");
    float vAxis = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(hAxis, 0f, vAxis);
    rb.position += movement * moveSpeed * Time.deltaTime;

【问题讨论】:

我主要做 2d Unity 工作,所以我不知道我可以为您的情况提供多少帮助,但 here 是一个非常有趣的视频,我发现它可以帮助您少量。不要让自己失望,一开始总是很难。我发现我工作的时间越长,它不仅变得更容易,而且变得更有趣! “试图让我的角色使用刚体组件而不是角色控制器移动”。 为什么? 次要,注意你很少在 Unity 中使用“FixedUpdate”。忘记它。 @JessyDoyle 感谢您的回复,是的,我看过很多他的视频,他真的很棒!实际上是因为那个特定的视频,我想用刚体去啊啊啊..我会再挖一点 @JoeBlow 为什么,因为它对我想要的最终结果有不同的感觉,就像 Jessy Doyle 链接的视频一样,它解释了我刚才所说的。根据我在 Unity 网站上阅读的内容,当您想在 Unity 中使用物理时,您宁愿在 FixedUpdate 中执行此操作,因为据我目前所知,是 Unity 这么说的,我认为这是正确的方法. 【参考方案1】:

我的想法。 如果您想要真实的感觉,您需要在角色身体的适当部分为您的角色添加rigidbody.addforce。不是rigidbody.position

希望帮助。

【讨论】:

谢谢,按下横轴时如何旋转字符? 如果你想要真正的感觉,那么你就给予真正的力量。然后在一侧施力。 这会让角色旋转吗? 尝试使用this 不只给你的角色一个rb,例如左腿、右腿、身体...

以上是关于Unity 3D - 使用刚体的第三人称角色移动的主要内容,如果未能解决你的问题,请参考以下文章

[Unity3D] 多人游戏中镜头固定角度、随角色移动的实现方式

刚体控制的角色在上坡时移动非常奇怪

unity第一人称控制器脚步声在哪

unity在一个场景中能否给2个物体加角色控制器

unity3d 第三人称视角的人物移动以及相机控制

Unity3d怎么控制第三人称的朝向