如何在鼠标处旋转 box2D 世界夹具

How to rotate a box2D world fixture at the mouse

我想将我的播放器的手臂设置为指向 window 中的鼠标,这是我的夹具手臂代码 我找不到如何将其设置为旋转并指向鼠标

package com.mygdx.game.Sprites.player;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.mygdx.game.PlayScreen;
import com.mygdx.game.main;



@SuppressWarnings("unused")
public class LArm extends Sprite {
    public LArm(PlayScreen screen){
        setBounds(getX(), getY(), 3 / main.PPM, 8 / main.PPM);
        setPosition(Player.b2body.getPosition().x, (float) Player.b2body.getPosition().y );
        setRegion(new Texture(Gdx.files.internal("LArm.png")));

    }
    public void update(float dt) {
        //setRotation(to the mouse);
        if(Player.runningRight)
            setPosition(Player.b2body.getPosition().x-1/main.PPM,Player.b2body.getPosition().y-8/main.PPM);
        if(!Player.runningRight)
            setPosition(Player.b2body.getPosition().x-2/main.PPM,Player.b2body.getPosition().y-8/main.PPM);
        setRegion(new Texture(Gdx.files.internal("LArm.png")));
        setOrigin((float)1.5 / main.PPM, 8 / main.PPM);

    }
}

Sprite 有一种方法 #setRotation(float degrees) 可以将图像旋转一定的度数。

你只需要计算对象和鼠标之间的度数,现在已经回答了很多次,this is one of many posts,它计算两个坐标之间的弧度,所以我把它改成度数:

double angle = Math.toDegrees(Math.atan2(mouse.x - arm.x, mouse.y - arm.y));

我假设你有鼠标坐标,否则最好设置一个 InputProcessor。现在你的具体坐标可能不同,你可能想计算鼠标和你的玩家之间的角度而不是手臂以保持一致,在这种情况下只需根据你的喜好更改坐标即可。希望对您有所帮助