瓷砖碰撞问题

发布于 2024-08-29 09:01:41 字数 175 浏览 2 评论 0原文

我正在研究瓷砖碰撞。目前,我只是以正常方式绘制图块地图(两个 for 循环)并且没有滚动。现在,要检查我的玩家是否位于图块上方,我使用tileX = (int)person1v.X / 16; tileY = (int)person1v.Y / 16; 但是,我想在撞到瓷砖之前检测到碰撞,以便它可以充当墙壁。如何在移动之前检测到碰撞?

I'm working on tile collision. Currently, I just draw the tile map the normal way (two for loops) and there is no scrolling. Right now, to check if my player is over a tile, I use tileX = (int)person1v.X / 16;
tileY = (int)person1v.Y / 16;

However, I want to detect collision before I hit the tile so it could act as a wall. How do I detect collision before even making the move?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

所有深爱都是秘密 2024-09-05 09:01:41

如果玩家一次移动 3 像素,则检查:

leftTile = (int)(person1v.x - 3) / 16;

以及右侧的图块:

rightTile = (int)(person1v.x + 3 + 16) / 16;

If the player moves 3 pixels at a time then check for:

leftTile = (int)(person1v.x - 3) / 16;

And for the tile to the right:

rightTile = (int)(person1v.x + 3 + 16) / 16;
故事和酒 2024-09-05 09:01:41

与其先移动他,然后再检查碰撞,不如检查角色未来位置的碰撞,如果没有碰撞,则更改角色的位置。

well instead of moving him first and checking for collision afterwards, check for collision for the future position of the character and if there is no collision then change the character's position.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文