当前位置: 首页 > 面试题库 >

根据玩家位置旋转纹理

龙毅
2023-03-14
问题内容

我正在制作一个2D游戏,其中包括一架与飞船通过槽式导弹作战的飞机,我希望飞船根据玩家的位置旋转,以便它们始终以“头部”面对玩家。播放器可以在y和x方向上自由移动。玩家和太空飞船具有一个Vector2
pos变量,该变量对应于它们的实际位置。任何帮助,将不胜感激。

这是我(现在正在工作)的代码:

    public void render(SpriteBatch sb) {
    Vector2 temp = new Vector2();
    float angle = temp.set(entityManager.getPlayer().pos).sub(pos).angle();
    TextureRegion region = new TextureRegion(texture);
    sb.draw(region, pos.x, pos.y, 0, 0, texture.getWidth(), texture.getHeight(), 1.0f, 1.0f,angle+90);
}

敌方飞船旋转,但它们并不总是面对玩家:


问题答案:

@dwn的答案在数学上是正确的,但是当您处理LibGDX框架时,最好使用本机工具。

如果您将敌人和玩家的位置存储在Vector2s中,则可以进行一些方便的计算。例如,确定特定敌人和玩家之间的角度:

Vector2 enemyPos;
Vector2 playerPos;
Vector2 temp;

float angle = temp
                .set(playerPos)
                .sub(enemyPos)
                .angle();

这将完全给您您想要的。当然,最好将temp矢量保存在公共空间中的某个地方,以便在众多的计算中使用它。您最好检查其他方便的Vector2方法,这将严重减轻您的生活。

祝好运。



 类似资料:
  • 我的剧本有问题,我要我的敌人跟着并向玩家旋转。当他四处走动的时候。这似乎很有效,但是当我的玩家在y上旋转180时,我的敌人似乎会回去很多(他的位置),只有当我的玩家回到他的正常旋转时,敌人才会回来。我到底做错了什么?

  • 为什么我的保安(S)和唐纳德(D)处于相同的位置。 地图应该是这样打印出来的 [D----] [- - - - -] [- - - - -] [--S-] [--P--] 但它却像这样出现 [S----] [- - - - -] [- - - - -] [- - - - -] [--P--] 所以正如你在这里看到的,我把安全位置设为[3,2],但出于某种原因,它没有将其识别为[3,2],并将安全位

  • 所以我在图像视图上做了一些旋转和翻译。据我所知,图像视图并没有真正在任何一个位置之后,你必须在动画完成后将其实际移动到那里。所以我尝试移动的图像视图称为标记,它设置在其原始位置和有它的起始位置。移动或翻译后,我调用来处理移动或旋转。这似乎有一半的时间完成了预期的结果...不确定我做错了什么,但它与我想要的方式不一致。

  • 我有两个带枢轴的矩形, 我需要根据红色矩形的旋转来附加绿色矩形的位置 结果应该如图所示: 我尝试了不同的公式,但没有成功 红色矩形: 绿色矩形: 我尝试了这样的方法: 非常感谢所有帮助过我的人!

  • 问题内容: 以前很少有人帮助我解决此问题,但旋转仍然混乱,我的大炮不会向玩家旋转,他们都错位了。我真的很需要此问题的帮助,这是我第一次尝试使物体向玩家旋转。我试图使我的大炮嘴向玩家旋转,但是旋转变得一团糟,我不知道该如何解决。 我完整的敌人射击课程 无论大炮在哪里,这都是大炮向玩家旋转的地方 问题答案: 首先,加农炮的图像太高了。剪裁边框并使用较小的图像。例如: 图像的中心是佳能的旋转点。您可以将

  • 我有一副牌洗牌和返回结果,但现在我想根据用户输入更改输出:玩家数量和每个玩家的纸牌数量。 原始代码: CardRun-main 甲板级 卡片类 纸牌输出甲板:54 玩家数量:4(由用户输入) 每个用户的纸牌数量:5(由用户输入) 玩家1:黑桃A,红心2,红小丑 玩家2:红心8,梅花10,红心9 玩家1手牌更好。