主题:碰撞的问题
因为开始学windows编程了.
我兴致勃勃的想试试编一个小型的RPG游戏.但遇到一个问题了.
假如有"多个"NPC人物(游戏里的由电脑控制的人), 怎么检测他们之间的碰撞呢?
我想到的方法有三个,
1 建立一个二维数组, 有人物的坐标则标为1,无则标为0;
但有面临两个问题, 首先数组大小要和屏幕一样长宽, 不然人物行走就会一格格移动的感觉不流畅.其次走一次就得先把原地位置标0,再把目的地标1. (空间量挺大的,那如果是魔兽游戏,一次一群小兵出现的,这样一擦一写,最后还得判断,似乎挺麻烦的)
2 建立一维数组,该数组直接就只存贮那些NPC人物的坐标, 然后每次只需循环一次,判断数组里的坐标是否相碰.n个NPC共只需(n^2)/2次检验. 这样虽免去了"擦写"步骤,但只适用于少量的NPC. 如果像飞机那样的,不是....
3 不用数组了, 就用现在老师讲的一个对一个碰撞的函数, 其坐标以参数形式输入.但这样似乎就得一个个手写函数...(要是有函数数组...就...嘻...)
大家有没有什么好意见啊,或是其它好思路,请指教一下啊.
多谢大家.
我兴致勃勃的想试试编一个小型的RPG游戏.但遇到一个问题了.
假如有"多个"NPC人物(游戏里的由电脑控制的人), 怎么检测他们之间的碰撞呢?
我想到的方法有三个,
1 建立一个二维数组, 有人物的坐标则标为1,无则标为0;
但有面临两个问题, 首先数组大小要和屏幕一样长宽, 不然人物行走就会一格格移动的感觉不流畅.其次走一次就得先把原地位置标0,再把目的地标1. (空间量挺大的,那如果是魔兽游戏,一次一群小兵出现的,这样一擦一写,最后还得判断,似乎挺麻烦的)
2 建立一维数组,该数组直接就只存贮那些NPC人物的坐标, 然后每次只需循环一次,判断数组里的坐标是否相碰.n个NPC共只需(n^2)/2次检验. 这样虽免去了"擦写"步骤,但只适用于少量的NPC. 如果像飞机那样的,不是....
3 不用数组了, 就用现在老师讲的一个对一个碰撞的函数, 其坐标以参数形式输入.但这样似乎就得一个个手写函数...(要是有函数数组...就...嘻...)
大家有没有什么好意见啊,或是其它好思路,请指教一下啊.
多谢大家.