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

MouseJointDef libgdx-像愤怒的小鸟一样绘制轨迹线

巫欣荣
2023-03-14

在libgdx游戏中

我想触地,然后拖动到某个地方,然后在释放(触地)时,根据与目标身体的距离和方向施加方向力。当你触地时,目标身体保持静止,然后在触地时,力沿着所需的轨迹施加。

(非常类似于愤怒的小鸟——当你拿着弹弓时,你可以看到目标身体的虚线轨迹——我也想这么做)

所以我想这可能不是最难的事情,但给出了几个选项,我倾向于使用MouseJointDef,但它是一个立即施加的力(即目标立即移动-我希望它保持静止,然后一旦接触事件发生,然后施加力)

绘制轨迹最简单的方法是什么?我也在使用Box2D。

共有1个答案

刘畅
2023-03-14

创建一个继承InputAdapter类的类,然后创建它的实例并注册它以侦听触摸输入。

    Gdx.input.setInputProcessor(inputAdapter);

有3种方法可以处理必须覆盖的触摸事件touch_downtouch_draggedtouch_up

在触摸下,检查触摸位置是否在鸟类区域。如果是,则使布尔标志为true。

touch_dragged中,检查上面的标志,如果是真的,计算触摸位置相对于鸟类拍摄中心的距离和拍摄角度。

在触摸屏中,您可以通过调用

    body2shoot.applyLinearImpulse(impulse, body2shoot.getWorldCenter());

无需鼠标点定义来移动车身2点。只需在每个渲染周期中,将触摸位置中的body2shoot变换设置为拖动。

为了计算轨迹,我编写了这样一个类:

public class ProjectileEquation
{
public float gravity;
public Vector2 startVelocity = new Vector2();
public Vector2 startPoint = new Vector2();

public ProjectileEquation()
{   }

public float getX(float t)
{
    return startVelocity.x*t + startPoint.x;
}

public float getY(float t)
{
    return 0.5f*gravity*t*t + startVelocity.y*t + startPoint.y;
}
}

为了绘制它,我设置了start Pointstart VelSpeed,然后在一个循环中,我递增地给出一个t(时间)并调用getX(t)getY(t)

 类似资料:
  • 玩家获胜的方法就是操作有限数量的小鸟将所有入侵的猪干掉,换句话说就是利用弹弓发射小鸟,让小鸟击中场上的所有猪。若小鸟全部发射完之后场上仍然有猪没有被击中,则玩家失败。判断游戏胜负关系的代码实现起来其实蛮简单的,大概是这样的

  • 问题内容: 当您启动《愤怒的小鸟》并点击播放时,您会看到一个水平滚动的菜单,该菜单具有居中的图像行,一旦单击该菜单就可以开始游戏,而没有的话。我想知道如何使菜单与此类似,因为它横向(水平)滚动并显示可点击的图像?提前致谢! 问题答案: 我认为您可以使用Horizo​​ntalScrollView完成此操作。Horizo​​ntalScrollView的子级将是一个LinearLayout,其方向为

  • TrackballControls 与 OrbitControls 相类似。然而,它不能恒定保持摄像机的up向量。 这意味着,如果摄像机绕过“北极”和“南极”,则不会翻转以保持“右侧朝上”。 例子 misc / controls / trackball 构造函数 TrackballControls( camera : Camera, domElement : HTMLDOMElement ) ca

  • 本文向大家介绍three.js绘制地球、飞机与轨迹的效果示例,包括了three.js绘制地球、飞机与轨迹的效果示例的使用技巧和注意事项,需要的朋友参考一下 对于three.js不太熟悉的朋友们可以参考这篇文章,threejs官网:https://threejs.org/ 首先我们来看下要实现的效果 这个缩小后的图片,下面我们来看下近距离的动态效果。。 效果比较简陋,需要后期再处理。。。 下面进入主

  • 轨迹信息为用户的浏览信息(比如首页、商品页、购物车、支付页、支付成功页等),只有调用轨迹方法,客服端的客服人员才能看到用户的浏览内容,提高服务质量。 > 参数说明: 一.标准集成方式 基本集成方式适用于在需要上传的轨迹的界面分别调用以下接口实现轨迹上传功能。 1.首页轨迹 /** 上报轨迹 @param pageName 当前页面名称 @param model 轨迹参数模型 */ NtalkerT

  • 轨迹的集成 轨迹信息为用户的浏览信息(比如首页、商品页、购物车、支付页、支付成功页等),用户可以在以上页面调用轨迹方法,调用成功后,客服人员可以在客服端看到用户的浏览内容,同时可以做客户下单统计,有助提高服务质量。如果客户不需要做统计可以不传轨迹。 参数说明: 参数 类型 是否必传 说明 siteid String 是 企业id title String 是 用户浏览当前页的标题名称 pagele