首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rigidbody2D:如何防止Y轴被0覆盖?

Rigidbody2D:如何防止Y轴被0覆盖?
EN

Stack Overflow用户
提问于 2021-10-21 14:36:31
回答 1查看 99关注 0票数 0
代码语言:javascript
复制
public void MoveCharacter(float directionHori) //either -1 or 1
{      
    direction = new Vector2 (directionHori, 0); //new vector2 using passed x value (1 or -1). //BUG - passing in 0 as Y axis overrides gravity while player is moving.

    rb.MovePosition(rb.position + direction * moveSpeed * Time.fixedDeltaTime); //apply movement 
}

上面是我的MoveCharacter方法,当它被调用时,Y轴被0覆盖,因此重力被禁用,允许玩家在他应该摔倒的时候飞行。这是一个2D的侧翼,因此玩家不应该能够垂直移动(当然,下降的时候除外)。我试过了方向=新的Vector2 (directionHori,rb.Velocity.y);//用rb.Velocity替换0

然而,这会造成更奇怪的行为。任何帮助都将不胜感激,我仍然是团结的新手!非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 14:39:36

与其使用需要自己计算最终位置的MovePosition,不如简单地调整velocity

代码语言:javascript
复制
var velocity = rb.velocity;
velocity.x = direction * moveSpeed;
rb.velocity = velocity;

这使重力和垂直运动保持不变,Rigidbody2D /物理引擎为您进行计算;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69663933

复制
相关文章

相似问题

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