阿志加油站(29)
软件世界
本篇要点回顾:
1.场景的组成。通常是把场景分成X×Y个单元格,单元格的大小可以自定义,这里定义为32×32像素。场景的组成部分可以简单地分成地面,物体,生物三部分。
2.组成场景的顺序。先在场景上铺上地块,然后放入物体(要正确地放入物体就要预先设置好物体的“着地坐标”和“关键坐标”),最后放入角色。
3.实现遮蔽。放入角色时必须检查角色是否“踩”到了某个物体的“遮蔽坐标”,如果“踩”到了就要重新放入该物体,这样物体就合理地遮挡住角色了。
地图编辑器制作相关知识点
想要自己开发地图编辑器的朋友可以参考下列知识点:
1.单元格结构
我们已经知道,一个场景是分成X×Y个单元格的,这些单元格可就是整个场景的核心了,它的结构为:
struct TitleStruct{
int m_nFloorID; //地块ID号
bool m_bCanPass; //角色是否可以
//“踩”在上面
int m_nObjectID; //物体ID号
bool m_bIsObjectKeyPos; //物体的
//关键坐标是否落在这里
bool m_bIsObjectCloakPos;//物体的
//遮蔽坐标是否落在这里
int m_nCloakObjCount; //遮蔽物体
//的个数
int m_nCloakObjID[16]; //各遮蔽物
//体的ID号,最多可有16个
POINT m_pObjectPos[16]; //遮蔽物
//体的坐标
bool m_nIsExit; //是不是一个出口
ExitStruct m_Exit; //出口结构
};
2.在地图上铺地块
如在坐标为(X,Y)的单元格铺上一个地块:
FloorType ft=GetFloorType(); //得到
//现在选中的地块的结构信息
mapstruct.m_titlestruct[X][Y].m_nFloorID=ft.m_nID; //记录该地块的ID
//号
mapstruct.m_titlestruct[X][Y].m_bCanPass=true; //设置此单元格能否被角色“踩”上
3.设置出口
当人物走到场景的出口时就要把场景切换到下一幅。在游戏中的出口定义为:
struct ExitStruct{
char m_chMap[32]; //出口所到达的
//目的场景
//到达目的场景后角色的坐标
int m_nX;
int m_nY;
int m_ndir; //到达目的场景后角
//色的方向
}
人物在走动时就要不断检测人物所“踩”到的单元格是不是一个出口,是的话就要马上切换到目的场景。
交流信箱: bluefox72@21cn.com
预告:下期阿志将带领大家认识场景的调入和切换。同时,数据库技术由于游戏开发连载的关系将暂停几期,望广大爱好数据库的同好谅解,但同时依然欢迎关于数据库版面的投稿。
