个人认为这个类存在错误,这些错误又集中出现在最后一个方法getDrawMatrix()里,因此把源码copy下来直接注释:
仍旧以root为坐标系,我把这个方法修改一下,思路是在target的concatenatedMatrix矩阵左边乘上root的逆矩阵,以此将target转换到root参考坐标系。代码如下:
经过测试,这种方法能够适应root的旋转,缩放,平移操作。
另外在测试时发现,碰撞检测时不能够用鼠标拉伸或缩小窗口,否则检测结果不准确。我猜测原因是影响到target的concatenatedMatrix的取值了吧。