我想将播放器的手臂指向窗口中的鼠标,这是我无法找到如何设置其旋转并指向鼠标的灯具的手臂代码
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);
}
}
答案 0 :(得分:0)
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是一个好主意。现在,您的情况下的特定坐标可能会有所不同,您可能需要计算鼠标与播放器之间的角度而不是手臂来保持一致,在这种情况下,只需根据自己的喜好更改坐标即可。希望这对您有帮助