ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SFML库——getGlobalBounds函数的使用方法猜测

2020-06-14 12:39:44  阅读:330  来源: 互联网

标签:getGlobalBounds 碰撞 贪吃蛇 SFML 移动 猜测 边界


SFML库——getGlobalBounds函数的使用方法猜测

最近在改写别人的贪吃蛇小游戏时发现,SFML库中的getGlobalBounds()函数的作用可能只是获取图形的方形边缘。

在写贪吃蛇的时候,我碰到了一个问题。贪吃蛇的身体是由多个sf::CircleShape类型的圆形组成的,当蛇的头部与身体碰撞时,游戏结束。检验碰撞时使用了sf::CircleShape::getGlobalBounds(),获取边界后判断是否有重叠。我原以为getGlobalBounds会返回圆形边界,所以设置贪吃蛇每次的移动距离为圆的直径(即每次移动后,圆正好相切),但是实际运行过程中,每当蛇向斜着的方向前进时,都会判断为碰撞,游戏结束。稍稍调大了贪吃蛇每次移动的距离,发现在一定角度内,贪吃蛇可以斜着移动了。我推测这是因为getGlobalBounds返回了方形的边界,在斜着移动时,边界会有重叠,判定为碰撞。在修改蛇的移动距离为圆直径的√2倍后,碰撞的问题解决了(虽然蛇的身体好像断了一样),这可以验证我的推测。

在网络上简单搜索后,并没有找到关于getGlobalBounds函数的相关信息,我也没有参考官网和相关书籍的说明,以上内容仅为推测。
希望这篇文章能帮助到和我遇到类似问题的人,不用像我一样搜不到解决方案。(可能是我太菜了搜不到)

欢迎大家评论补充和指正

标签:getGlobalBounds,碰撞,贪吃蛇,SFML,移动,猜测,边界
来源: https://blog.csdn.net/Fred_Bohr_Locke/article/details/106714442

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有