为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 libGDX 中以相反的方式发射子弹

如何在 libGDX 中以相反的方式发射子弹

慕森卡 2023-06-14 14:22:32
我创建了一个游戏的功能,即子弹以恒定的速度进入十字准线。但是我有一个问题:我怎样才能让子弹与它的射击方向相反?让我解释一下我想做什么。当子弹接触到特定材料时,它会朝相反的方向移动。就像这张图片:如您所见,子弹正向相反的方向“弹跳”。这是我的功能,如果需要,我可以在其中设置子弹的线速度:public void direccion(float xx, float yy) {        float mousex = Gdx.input.getX();        float mousey = 0;        if (shoot.getAngle() > 6.1 && shoot.getAngle() < 9.6) {             mousey = Gdx.input.getY() - 5;        } else {            mousey = Gdx.input.getY();        }        Vector3 mousePos = new Vector3(mousex, mousey, 0);        jugador.camera.unproject(mousePos);        float speed = 60f;        float velx = mousePos.x - xx;        float vely = mousePos.y - yy;        float length = (float) Math.sqrt(velx * velx + vely * vely);        if (length != 0) {            velx = velx / length;            vely = vely / length;        }        shoot.setLinearVelocity(velx * speed, vely * speed);希望你能理解我的想法。谁能帮我这个?
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

在思考我该怎么做之后,我有了一个主意。

根据矢量数学,子弹在接触到有问题的材料后可以采用这些值进行反弹......

如图所示:

//img1.sycdn.imooc.com//64895cc700011ca706510306.jpg

经过这次分析,我已经适应了一个简单的代码。


        vectorPart = shoot.getLinearVelocity();

        if ((vectorPart.x > 0 && vectorPart.y < 0) || (vectorPart.x > 0 && vectorPart.y > 0)

                || (vectorPart.x < 0 && vectorPart.y < 0) || (vectorPart.x < 0 && vectorPart.y > 0)) {

            vectorPart = new Vector2(vectorPart.x, vectorPart.y * -1);

        } else {

            vectorPart = new Vector2(vectorPart.x * -1, vectorPart.y * -1);

        }

        shoot.setLinearVelocity(vectorPart.x, vectorPart.y);

我评估了 linearVelocity 向量,然后修改了它的符号。


使用此代码和 anylisis 一切正常!


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信