8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

根据图像斜率找到角度

M. Mariscal 2月前

13 0

我在游戏中添加了一个玩家,并且我有一个圆圈作为地图。我希望​​这个玩家的碰撞响应指向基于圆圈斜率的当前角度。以下是...

我在游戏中添加了一个玩家,并且我有一个圆圈作为地图。我希望​​这个玩家的碰撞响应指向基于圆圈斜率的当前角度。

以下是圆圈的代码

public void handleCollision(Entity entity) {

    double widthScale = (width / (double) image.getWidth());
    double heightScale = (height / (double) image.getHeight());

    int imageWidth = image.getWidth();
    int imageHeight = image.getHeight();
        
    int bottomLeftX = entity.getX();
    int bottomLeftY = entity.getY() + entity.getHeight();

    int bottomRightX = entity.getX() + entity.getWidth();
    int bottomRightY = entity.getY() + entity.getHeight();

    int transLeftX = doubleToInt((bottomLeftX - x) / widthScale);
    int transLeftY = doubleToInt((bottomLeftY - y) / heightScale);

    int transRightX = doubleToInt((bottomRightX - x) / widthScale);
    int transRightY = doubleToInt((bottomRightY - y) / heightScale);

    boolean leftOut = transLeftX < 0 || transLeftY < 0;
    boolean rightOut = transRightX < 0 || transRightY < 0;

    if(!leftOut) {
        if(transparencyMap[transLeftX][transLeftY] == 1) {
            int x1 = 0;
            int y1 = 0;
                
            if(transLeftY > imageHeight / 2) {
                y1 = imageHeight;
            } 
            if(transLeftX > imageWidth / 2) {
                x1 = imageWidth;
            }
                
            int x2 = transLeftX;
            int y2 = heightMap[transLeftX];
                
            System.out.println(x1 + " " + y1 + ", " + x2 + " " + y2);
                
            double rotation = Math.toDegrees(Math.atan2(y1 - y2, x1 - x2));
            entity.setRotation((float) Math.toRadians(rotation + 90));
        }
    }
        
    // TODO: Add !rightOut logic
}

我尝试过根据玩家所在的象限将玩家指向角落。如果玩家位于右上象限,则指向右上角,依此类推。但这种方法不起作用。我怎样才能自动找出斜率并相应地变换玩家

帖子版权声明 1、本帖标题:根据图像斜率找到角度
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由M. Mariscal在本站《java》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: