用scratch制作《仙剑奇侠传95》(05)

Scratch 少儿编程 462浏览 0评论
仙剑奇侠传95

友情提示:视频教程观看时请手动设置清晰度。

 

用scratch制作《仙剑奇侠传95》(05)

本期的副标题:《障碍物的判断及处理》

 

在地图中有大量的不可逾越的障碍物,诸如篱笆、树木、NPC等,如何判断这些障碍物?如何处理不能穿越这些障碍物呢?这就是本期要分享的关于这个问题的算法:面积法

基本数学模型是这样的,将障碍物描述成一个多边形,然后判断一个点是否在这个多边形内部;解决方法就是先利用鞋带公式算出这个多边形的面积,然后依次算出这个点到多边形各个相邻两点所组成的三角形的面积的和;判断这个两个面积是否相等,相等则证明这个点在多边形的内部,不等则证明这个点在多边形的外部。

用scratch制作《仙剑奇侠传95》(05)

用scratch制作《仙剑奇侠传95》(05)

图有点丑,凑合着看吧用scratch制作《仙剑奇侠传95》(05)

  • 有了思路接下来就是数据的存储方式和处理了,先展示数据的存放;各个障碍物(多边形)的位置信息分别放在两个列表里。

 

用scratch制作《仙剑奇侠传95》(05)

  • 还要有一个列表用来解析这些数据存放格式;分别是地图编号、障碍物起始坐标编号与顶点个数,每一个地图数据还要设置个结束标识符。

 

用scratch制作《仙剑奇侠传95》(05)

  • 接下来的任务就是通过索引的信息遍历障碍物的各个顶点计算面积

用scratch制作《仙剑奇侠传95》(05)

  • 计算当前坐标点到障碍物各个顶点所组成的三角形的面积和

用scratch制作《仙剑奇侠传95》(05)

用scratch制作《仙剑奇侠传95》(05)

 

  • 循环检测当前坐标与障碍物之间的关系,如果二者面积相等,将状态参数设置为不可穿越

用scratch制作《仙剑奇侠传95》(05)

  • 根据状态变量进行相应的方向控制,为了迅速脱离障碍物区域设置了2倍的退返距离;为了防止抖动,设置了frame_on状态参数与等待处理,大家可体会一下,蛮好用的。用scratch制作《仙剑奇侠传95》(05)

本系列只提供素材分享,不分享源代码,抱歉!~

素材链接: https://pan.baidu.com/s/1vaYrN0UKi3EeapRL9mH0hQ 提取码: vyh1

指导视频:

 

转自公众号:
嘻嘻哈哈学编程

您必须 登录 才能发表评论!