我是编码员但不是图形制作者。虽然我不能生产技术上“工作”的图形,但我可以在视觉上合理地生产出符合质量标准的图形。这就是我的意思:
我正在使用CGRectIntersectsRect来碰撞图像。我的图像有一些额外的空间,我已经使用Adobe PhotoShop完全透明,但即使这个额外的透明空间不可见,当两个图像碰撞时,看起来你将什么都没打,因为这个额外的隐形透明空间是图像和调用CGRectIntersectsRect时,它检测两个图像之间的触摸。因此,如果另一个图像触及透明空间,则调用CGRectIntersectsRect并执行我的代码。我只希望我的代码在它碰到图像的实际COLOR空间时被执行。这有两件事可以帮助我完成这些工作,他们会提出问题。
谢谢你们!
答案 0 :(得分:2)
关于你的问题#1,这取决于。所有图像都是矩形的。因此,如果您的精灵是矩形,您可以在Photoshop中将其裁剪为矩形区域。但是如果你想要处理一个圆球,那么就不能做“移除额外空间”这样的事情。您的圆球将始终存储在矩形图像中,角落上有透明空间。
答案 1 :(得分:1)
了解如何在photoshop中的图像上制作NO EXTRA SPACE。我怎么能这样做,教程?
您可以使用矩形选框工具和Image > Crop
手动选择区域,或使用Image > Trim
基于边缘像素颜色自动修剪图像。
CGRectIntersectsRect仅在触摸图像的颜色部分时调用。一种方法吗?
您可以使用pixel-perfect collisions或为游戏对象创建更好的边界形状。例如,不是像this one这样的太空船使用像素完美碰撞,而是可以使用翅膀的三角形,身体的矩形和头部的三角形。
像素完美碰撞
你可以实现它的一种方法是
备用碰撞检测解决方案
如果您的游戏是基于物理的,那么您可以使用像Box2D这样的物理引擎。您可以使用圆形,矩形和多边形来表示所有游戏对象,它可以为您提供准确的结果,而不会产生不必要的开销。
答案 2 :(得分:1)
对于非矩形形状的碰撞检测,您应该查看可用于iOS的许多游戏和/或物理库之一。 Cocos2d加上Box2d或花栗鼠是很受欢迎的选择。
如果你想自己做,你需要从像自定义CGPath跟踪每个对象的实际形状的东西开始,然后使用像CGPathContainsPoint这样的函数(来自内存,它可能是错误的)。但这不是一项简单的工作。愤怒的小鸟使用box2d,AFAIK。