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

我创建了一个游戏的功能,即子弹以恒定的速度进入十字准线。但是我有一个问题:我怎样才能让子弹与它的射击方向相反?

让我解释一下我想做什么。当子弹接触到特定材料时,它会朝相反的方向移动。就像这张图片:

http://img1.mukewang.com/64895cb90001704006090279.jpg

如您所见,子弹正向相反的方向“弹跳”。


这是我的功能,如果需要,我可以在其中设置子弹的线速度:


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);

希望你能理解我的想法。谁能帮我这个?


慕森卡
浏览 105回答 1
1回答

撒科打诨

在思考我该怎么做之后,我有了一个主意。根据矢量数学,子弹在接触到有问题的材料后可以采用这些值进行反弹......如图所示:经过这次分析,我已经适应了一个简单的代码。&nbsp; &nbsp; &nbsp; &nbsp; vectorPart = shoot.getLinearVelocity();&nbsp; &nbsp; &nbsp; &nbsp; if ((vectorPart.x > 0 && vectorPart.y < 0) || (vectorPart.x > 0 && vectorPart.y > 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; || (vectorPart.x < 0 && vectorPart.y < 0) || (vectorPart.x < 0 && vectorPart.y > 0)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vectorPart = new Vector2(vectorPart.x, vectorPart.y * -1);&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vectorPart = new Vector2(vectorPart.x * -1, vectorPart.y * -1);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; shoot.setLinearVelocity(vectorPart.x, vectorPart.y);我评估了 linearVelocity 向量,然后修改了它的符号。使用此代码和 anylisis 一切正常!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java