【问题标题】:How do I align bullets with a gun?如何将子弹与枪对齐?
【发布时间】:2012-07-28 01:03:11
【问题描述】:

我有我的播放器的图像(自上而下的 2D)。玩家旋转面对镜头,并拿着枪。创建子弹时,它们会在玩家的 x 和 y 处创建。这在玩家面向正确方向时有效,但当玩家旋转并射击时,子弹会朝着正确的方向前进,但不会来自枪口。我该如何解决这个问题?

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    Bullet b = new Bullet(x, y, angle);
    Utils.world.addBullet(b);
}

【问题讨论】:

    标签: java rotation sprite projectile topdown


    【解决方案1】:

    您必须确定枪的偏移量(在油漆中打开图像,或试错),然后旋转该偏移量以获得子弹的初始位置。

    以下内容应该可以:注意 - 我没有对此进行测试,它可能有错别字

    public void fire() {
        angle = sprite.getRotation();
        System.out.println(angle);
        x = sprite.getX();
        y = sprite.getY();
    
        double bulletX = x + (gunOffsetX * Math.cos(angle) - gunOffsetY * Math.sin(angle));
        double bulletY = y + (gunOffsetX * Math.sin(angle) + gunOffsetY * Math.cos(angle));
    
        Bullet b = new Bullet(bulletX , bulletY , angle);
        Utils.world.addBullet(b);
    }
    

    来源:http://en.wikipedia.org/wiki/Rotation_(mathematics)

    【讨论】:

    • 这似乎不起作用。和以前几乎一样,只是现在子弹来自不同的位置。请注意,我没有将枪图像附加到玩家身上,而是玩家拿着枪的图像。
    • 没关系!我让它工作。我所要做的就是在使用 Math.cos(...) 和 Math.sin(...) 之前将角度转换为弧度。
    猜你喜欢
    • 2019-03-21
    • 2021-05-20
    • 2016-04-12
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2021-05-01
    • 2017-09-07
    • 2021-07-17
    相关资源
    最近更新 更多