当前位置: 首页 > 知识库问答 >
问题:

LibGDX Box2D播放器跌跌撞撞

姚阳德
2023-03-14

我正在尝试编程一个简单的2D平台,我想让玩家浏览一些平台。不幸的是,我的玩家无缘无故地在某些平台上绊倒:

这显然不是我想要的。我唯一能想象的是,由于某种原因,这些盒子的高度不一样。。。但如何解决这个问题呢?以下是我的一些代码:

createPlatform。。。

public static Body createPlatform(World world, int x, int y) {
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyDef.BodyType.StaticBody;
    bodyDef.position.set(new Vector2(x, y));
    PolygonShape shape = new PolygonShape();
    shape.setAsBox(1, 1);
    Body body = world.createBody(bodyDef);
    body.createFixture(shape, Constants.GROUND_DENSITY);
    body.resetMassData();
    PlatformUserData userData = new PlatformUserData(1, 1, Constants.GROUND_IMAGE_PATH);
    body.setUserData(userData);
    shape.dispose();
    return body;
}

Runner.java-act()

@Override
public void act(float delta) {
    super.act(delta);
    body.setLinearVelocity(new Vector2(10f,0));
}

共有2个答案

蓬野
2023-03-14

问题是,玩家在地面上虚构,所以速度大于摩擦支撑,所以身体会结块。

你必须把:

body.setFixedRotation(true);

或者降低摩擦力的值。

仰欣悦
2023-03-14

当地面由多个部分组成时,碰撞检测框架可能会检测到下一个块的边缘,就像它比前一个块高一点一样。这是一种计算误差,有时会发生在每个滑动物体上。这就是为什么他们经常将玩家的形状设置为椭圆,并冻结对象的旋转。

 类似资料:
  • 问题内容: 我有一个简单的放置请求,并且正在使用Alamofire的类型将数据发送到服务器。我想使用codable。如何将我的可编码结构转换为参数,或者重新配置Alamofire请求以将JSON对象作为参数?使用Alamofire发送帖子和放置请求的最佳,最有效的方法是什么? 这就是我现在正在使用Alamofire所做的事情。 这是我们的结构。 问题答案: 您可以制作一个新的并设置为您的编码。试试

  • 有没有人创建过针对f5断开连接的成功Spock测试? 在我的f5规则中,如果满足一种情况--比方说一个坏的cookie,我就会断开连接 在浏览器中手动测试,会导致缓慢但最终的超时,时间限制取决于浏览器。但是,我想将我的测试并入我们的Spock函数测试库,而不是针对f5规则的手动测试。 使用http://fbflex.wordpress.com/2010/08/25/geb-and-grails-t

  • 我已经尝试解决了平滑的玩家-墙壁碰撞的问题,这样玩家可以沿着墙壁滑动。 我尝试了以下内容: 但是如果玩家碰到了墙,他不会滑动...他只是停下来了。(我对W,A,S,D也是分开做的。) 只有当我将玩家位置设置回他正在触摸的墙壁位置时,它才有效。如下: 但是它不起作用,因为对于与另一面墙相连的墙,玩家会接触更多的边,玩家会跳到角落...所以它只适用于一面墙... 我的问题是:如何以另一种方式使玩家与墙

  • 由于小程序里只能使用小程序提供的video组件,所以Mudu.Room.Player仅提供了对用户播放时长的统计功能。 只需要在小程序的事件处理中执行相应函数即可。 video组件bindplay时调用 Mudu.Room.Player.OnPlay() video组件bindpause时调用 Mudu.Room.Player.OnPause() video组件bindended时调用 Mud

  • Mudu.Player 播放器组件(muduPlayer 新版) 升级提示 在 初始化播放器 和使用 player.load() 方法时新增isLive参数(默认为false) 该参数用于控制播放器的ui展示,当为false时 显示进度条 和 时间进度 ;当为true时 隐藏进度信息 并 显示为直播状态 初始化播放器 var isChannelLiving = !!Mudu.Room.GetLiv

  • 问题内容: 最大跌幅是量化金融中用于评估已经历的最大负收益的常见风险度量。 最近,我变得不耐烦使用循环方法来计算最大跌幅。 我熟悉一个普遍的看法,即向量化的解决方案会更好。 问题是: 我可以将这个问题向量化吗? 这个解决方案是什么样的? 有什么好处? 编辑 我将亚历山大的答案修改为以下功能: 问题答案: 假定是收益的数据框架,其中每一列是单独的策略/经理/安全性,而每一行是一个新日期(例如,每月或