阿志加油站(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

  预告:下期阿志将带领大家认识场景的调入和切换。同时,数据库技术由于游戏开发连载的关系将暂停几期,望广大爱好数据库的同好谅解,但同时依然欢迎关于数据库版面的投稿。