如何在鼠标处旋转 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。现在你的具体坐标可能不同,你可能想计算鼠标和你的玩家之间的角度而不是手臂以保持一致,在这种情况下只需根据你的喜好更改坐标即可。希望对您有所帮助
我想将我的播放器的手臂设置为指向 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。现在你的具体坐标可能不同,你可能想计算鼠标和你的玩家之间的角度而不是手臂以保持一致,在这种情况下只需根据你的喜好更改坐标即可。希望对您有所帮助