首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Unity 3D中如何锁定物理体在z轴上的位置

在Unity 3D中如何锁定物理体在z轴上的位置
EN

Stack Overflow用户
提问于 2017-04-11 22:09:44
回答 2查看 2.9K关注 0票数 1

我正在开发一个2.5D的游戏。在这个游戏中,我想让我的角色(有刚体组件)在x轴和y轴上移动。因此,我使用以下代码片段:

代码语言:javascript
复制
private void LockZAxis () {
    Vector3 currentPosition = _rigidbody.position;
    currentPosition.z = 0;
    _rigidbody.position = currentPosition;
}

我在Update、FixedUpdate和LateUpdate的末尾都调用了这个LockZAxis方法。但它不起作用。当我的角色向前奔跑一段时间时,它的z位置仍然改变。

为了获得更多信息,在我的代码中,我有两次操作RegidBody的位置。第一个是当我的角色跳跃的时候,我使用了这个:

代码语言:javascript
复制
jumpVelocityVector = Vector3.up * jumpForceUp + transform.forward * jumpForceForward;
_rigidbody.velocity = jumpVelocityVector;

当我想让我的角色移动得更快时,每一帧,所以在update方法中,我有以下内容:

代码语言:javascript
复制
void Update () {
    Vector3 newPosition = transform.position + transform.forward * speed * Time.deltaTime;
    newPosition.z = 0;
    _rigidbody.MovePosition (newPosition);

    LockZAxis ();
}
EN

Stack Overflow用户

发布于 2017-04-11 22:18:01

刚体用于模拟物理,通过在每一帧设置刚体的位置,实质上是在每一帧中传送角色。您可以限制在z轴上的移动,这将阻止它在应用物理时在z轴上移动,这是刚体通常用于的用途。

下面是如何限制刚体位置更改的方法:

如果您在更改位置后运行LockZAxis(),则应在每一帧将对象传送到z位置0。请确保z轴是正确的轴。可以通过暂停正在运行的游戏并操纵变换值来调试它,以查看每个轴是如何移动对象的。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43348406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档