gpt4 book ai didi

android - 如何在android中编写滚动游戏相机?

转载 作者:行者123 更新时间:2023-11-29 18:23:42 26 4
gpt4 key购买 nike

我目前正在尝试编写一个简单的自上而下视角射击游戏。我正在使用 SurfaceView 和 Canvas 在屏幕上绘制图形,但我无法找到如何使“相机”可滚动。玩家角色始终位于屏幕中央,相机(本质上是 SurfaceView 的 Canvas )应该一直跟随他(例如,就像在 Alien Swarm 中一样)。但是,我无法弄清楚如何定期进行。我现在的做法是根据玩家的输入移动游戏世界中的所有其他对象 - 如果它们的坐标恰好在屏幕上,则绘制它们。玩家始终保持在同一坐标上。有什么方法可以实际移动(滚动)SurfaceView 本身吗?我看到了 Scroll 小部件和 SurfaceView.scrollBy(int x, int y) 方法,但我尝试实现其中任何一个都会导致 Force Close。感谢任何帮助,提前致谢!

附言请注意 - 我对在该项目中使用开放式 GL 不感兴趣。

最佳答案

正如 Kiril 在他的评论中指出的那样,上面的答案是不正确的。实现一个简单的滚动相机,需要

  1. 将 Canvas 转换为玩家位置的逆坐标
  2. 绘制背景
  3. 翻译回 (0,0)
  4. 画出玩家

所以,把它放在代码中

//Translate to -playerX, -playerY and draw the background
canvas.translate(-playerX, -playerY);
background.draw();

//Translate back to 0,0 and draw the player
canvas.translate(playerX, playerY);
player.draw();

这样,播放器始终停留在屏幕上的同一位置,您会看到背景在其后面移动。

需要注意的一件事是 canvas.translate(x,y) 不会将 Canvas 转换为坐标 (x,y)。它按指定的距离平移。起初这可能令人困惑。

示例:

  1. 你在 (0,0)
  2. 你调用 canvas.translate(2,3)
  3. 你调用 canvas.translate(-1,-1)
  4. 你现在在 (1, 2)

关于android - 如何在android中编写滚动游戏相机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com