Objective-C绘制一条路径并检测它何时关闭(形成一个封闭的形状)

时间:2011-02-27 13:38:42

标签: objective-c cocos2d-iphone logic

我对游戏编程很新(但不是编程),我想创建一个在屏幕上留下痕迹的太空船。现在我的问题是想出一个解决方案,如何检测从船上留下的痕迹是否形成一个封闭的形状 - 例如。如果船只在一个物体周围留下一条痕迹,那么该物体就会被捕获到它的踪迹中。

我正在考虑的方向是在屏幕上看不到的图像上绘制路径的路径,然后不时尝试用特定颜色填充它,然后检查填充是否在路径路径中捕获。然而,这似乎是很多开销。

任何想法如何做到这一点?我正在使用cocos2d,如果有任何帮助

1 个答案:

答案 0 :(得分:1)

在游戏编程中,你经常需要在数学上思考,而不是在视觉上。

首先你的船在屏幕上不断留下痕迹?如果是,则更容易知道形状何时关闭:您只需要记住您的船开始离开路径的坐标,然后等待路径再次接近该坐标(例如在半径10内)像素,否则用户需要非常准确才能完全匹配相同的像素以关闭形状。)

路径的直观表示仅供用户使用,您永远不会用它来计算任何东西。你要做的是把船的踪迹所遵循的路径留在记忆中:一个多边形,它只是它所遵循的坐标列表。

然后,当您知道形状已关闭后,您必须确定对象是否在多边形内。 Objective-c或cocos2d(我不太了解它)可能已经包含一个内置函数来知道一个点是否在多边形内。在java中有Polygon类,这使得它非常简单。如果你没有找到任何你可以自己做的事情,那么关于这个主题已经有了很好的答案,这里有一个很好的答案:How can I determine whether a 2D Point is within a Polygon?