本文主要是介绍个人关于存储不同类型对象进行碰撞检测的一些思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(声明:以下面向对象思路是基于C++和2D图形的)
在代码量较小的程序中,我们可能会直接把所有需要的对象的碰撞检测封装在类当中,然后在
角色移动等动作的渲染过程中进行自动的碰撞检测,但这样的做法有个弊端,那就是我们已知了需求,
而我们如果需要扩展程序,则需要不断的在类内部进行添加,这样的做法显然破坏了程序的扩展性,
使得代码难以使用,因此我们需要该角色的类对外提供一个接口,利用这个接口,将那些需要进行
碰撞检测的对象进行检测,然后进行角色的移动等动作的渲染。
但是这里有一个问题,因为碰撞检测的对象并不是唯一的,特别是自定义的怪物类对象,地图对象等,
更是不尽相同的,如果我们为每个对象都提供一个多态版本的对外碰撞检测接口,那么随着需要碰撞检测
类型对象的增多,这些多态函数的数目也会增多,这样一来会使程序更加的累赘,二来会不断的修改角色
类中碰撞检测的内容,使得角色类的通用型,可扩展性和简洁性降低,这样的做法并不比原来好上多少,
因此我们需要换个思路。
一个更有效的做法是在类内部存储一种作为容器的数据结构,
这篇关于个人关于存储不同类型对象进行碰撞检测的一些思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!