我有一个大小为20x10像素的角色,并且我有一个基于像素的碰撞地图(类似贪吃蛇)。
如果给定大于每帧1像素的速度,追踪角色的碰撞最好的方法是什么?有比沿着速度向量迭代每个像素更好的解决方法吗?
我正在Lua(Love 2D)中实现这一点,但通用解决方案将是理想的。
00000000
00100000
01100000
01110000
当一个精灵与另一个精灵碰撞时,创建一个新的掩码,大小与较大掩码相同,以较小掩码为基础,并将其“偏移”到精灵之间的位置差。
完成此操作后,对这两个掩码中所有字节进行位“与”运算。如果任何字节结果 > 0,则表示发生了碰撞。
您的解决方案是最简单的 - 迭代每个像素。
只需确保在每次迭代中仅检查“新”像素即可。
假设字符同时向右下移动:
***** ..... ..... * = "Present"
***** .***** .****# . = "Old and now empty"
***** .***** => .****# # = "New"; check these on iteration 2
***** .***** .****#
***** #####
It. 1 It. 2 "New" pixels