《堵车啦》关卡配置设计


一、需要配置的项

1、选择地图

2、设置路径

    ① 考虑多个终点的情况

    ② 与哪些路径需要检测碰撞

    ③ 最多同时允许车量

3、设置红绿灯

    ① 位置

    ② 角度

    ③ 所控制路径

4、设置车类型(不设置按通用设置)

    ① 汽车编号

    ② 汽车图片

    ③ 移动速度

    ④ 得分(通过,救援成功)

    ⑤ 怒气相关情况

    ⑥ 汽车损坏概率

5、设置干扰项

    ① 目前两种类型:火车、飞机

    ② 设置干扰项路径,目前只能设置水平或垂直

    ③ 出现条件、概率和时间间隔

    ④ 设置速度

    ⑤ 火车时候,需要判断多节车厢条件

6、关卡相关信息

    ① 编号

    ② 关卡名

    ③ 时间

    ④ 星级评定(一星、二星、三星)

    ⑤ 开启条件

    ⑥ 怒气上限


二、数据格式设计

{
	"Info": {
		"LevelID关卡编号": 5220,
		"Name关卡名": "关卡一",
		"TimeLimit时间限制(单位:秒)": "120",
		"OpeningCondition开启条件": {
			"Type条件类型": "TotalStar总星级",
			"Arithmetic判定条件": ">",
			"Value判定值": 10
		},
		"RageLimit怒气值上限": "500",
		"StarCondition1评定一星条件": "1000",
		"StarCondition2评定二星条件": "2000",
		"StarCondition3评定三星条件": "3000",
		"CarSpawnInterval车产生时间间隔(单位:毫秒)": 100,

		"RescueScore救援成功得分": "200",
		"IsNewCarWaiting新出的车是否等待": true
	},
	"Map": {
		"MapName": "Level1",
		"MapExt": "png",
		"MapWidth": 640,
		"MapHeight": 480,
		"TileWidth": 25,
		"TileHeight": 25
	},
	"Cars(该关卡所有车的信息)": [{
		"CarName": "RedCar",
		"CarType汽车类型": 5,
		"Speed速度": 5,
		"Acceleration加速": 0.15,
		"Friction摩擦力": 0.75,
		"BrokenRate车损坏概率(单位:%)": 20,
		"BrokenTimerRange车损坏的时间范围": {
			"MinT": 4500,
			"MaxT": 7500
		},
		"AnnoyedRageCount恼怒的怒气值": 4,
		"AngryRageCount愤怒的怒气值": 7,
		"VeryAngryRageCount非常愤怒的怒气值": 10,
		"HappyStateScore开心状态得分": 500,
		"AnnoyedStateScore恼怒状态得分": 250,
		"AngryStateScore愤怒状态得分": 100,
		"VeryAngryStateScore抖动状态得分": 0
	}],
	"Routes": [{
		"RouteID路径编号": "",
		"RouteName路径名": "",
		"CarNumLimit允许同时最多车量": 3,
		"CollisionRoute": [],
		"CarType车类型": [],
		"StopTiles停车位置(允许多个)": [{
			"x": 1,
			"y": 2
		}],
		"StopTilesOffset停车位置偏移量(与上面对应)": [{
			"x": 0,
			"y": 0
		}],
		"Route路径(算格子,非像素)": [{
			"x": 0,
			"y": 0
		}, {
			"x": 1,
			"y": 1
		}]
	}],
	"Lights": [{
		"LightID红绿灯编号": "自动生成",
		"Position位置": {
			"x": 1,
			"y": 1
		},
		"Angle角度": 90,
		"ControlRoute控制路径": [{
			"x路径编号": 1,
			"y第几个停车点": 1
		}]
	}],
	"Distracter": [{
		"DistracterID编号": 1,
		"DistracterType类型": "Plane",
		"Rate出现概率(单位:%)": 100,
		"Condition出现条件": {
			"Type条件类型": "Score",
			"Arithmetic判定条件": ">",
			"Value判定值": 10000
		},
		"TimeInterval时间间隔(单位:秒)": 10,
		"StartPos开始点": {
			"x": 0,
			"y": 0
		},
		"EndPos结束点": {
			"x": 1,
			"y": 1
		}
	}, {
		"DistracterType": "Train",
		"Rate出现概率(单位:%)": 100,
		"Condition出现条件": {
			"Type条件类型": "Score",
			"Arithmetic判定条件": ">",
			"Value判定值": 10000
		},
		"TimeInterval时间间隔(单位:秒)": 10,
		"StartPos开始点": {
			"x": 0,
			"y": 0
		},
		"EndPos结束点": {
			"x": 1,
			"y": 1
		},
		"WarningTime火车出现前警告时间(单位:毫秒)": 2000,
		"BoxCardinal火车车厢基数": 20000,
		"BoxIncrease火车车厢增长值 车厢数计算公式:Math.floor(当前分数 - 基数 / 增长值) + 1(若分数小于基数,车厢数为0)": 10000,
		"BoxMax火车最大车厢数": 3
	}],
	"Layers": {
		"LayerBacks": [{
			"index": 0,
			"Type层级类型": "Route",
			"RouteID路径编号": ""
		}, {
			"index": 1,
			"Type层级类型": "Image",
			"ImageName图片名": "",
			"ImageExt图片扩展名": "",
			"Position图片位置": {
				"x": 1,
				"y": 1
			}
		}, {
			"index": 2,
			"Type层级类型": "Train火车"
		}],
		"LayerFronts": [{
			"index": 0,
			"Type层级类型": "得分UI(固定项,不可新增或删除)"
		}, {
			"index": 1,
			"Type层级类型": "Light",
			"LightID红绿灯编号": ""
		}, {
			"index": 2,
			"Type层级类型": "Chopper救援飞机"
		}, {
			"index": 3,
			"Type层级类型": "Plane干扰机"
		}]
	}
}

三、实例

{
	"Info": {
		"LevelID": 1,
		"Name": "关卡一",
		"TimeLimit": "120",
		"OpeningCondition": {
			"Type": "TotalStar",
			"Arithmetic": ">",
			"Value": 10
		},
		"RageLimit": "500",
		"StarCondition1": "1000",
		"StarCondition2": "2000",
		"StarCondition3": "3000",
		"CarSpawnInterval": 100,

		"RescueScore": "200",
		"IsNewCarWaiting": true
	},
	"Map": {
		"MapName": "Level1",
		"MapExt": "png",
		"MapWidth": 640,
		"MapHeight": 480,
		"TileWidth": 25,
		"TileHeight": 25
	},
	"Cars": [{
		"CarName": "RedCar",
		"CarType": 0,
		"Speed": 5,
		"Acceleration": 0.15,
		"Friction": 0.75,
		"BrokenRate": 20,
		"BrokenTimerRange": {
			"MinT": 4500,
			"MaxT": 7500
		},
		"AnnoyedRageCount": 4,
		"AngryRageCount": 7,
		"VeryAngryRageCount": 10,
		"HappyStateScore": 500,
		"AnnoyedStateScore": 250,
		"AngryStateScore": 100,
		"VeryAngryStateScore": 0
	}],
	"Routes": [{
		"RouteID": "1",
		"RouteName": "East",
		"CarNumLimit": 5,
		"CollisionRoute": [],
		"CarType": [0],
		"StopTiles": [{
			"x": 7,
			"y": 10
		}],
		"StopTilesOffset": [{
			"x": 0,
			"y": 0
		}],
		"Route": [{
			"x": 0,
			"y": 10
		}, {
			"x": 16,
			"y": 10
		}, {
			"x": 16,
			"y": 18
		}, {
			"x": 14,
			"y": 18
		}, {
			"x": 14,
			"y": 0
		}]
	}],
	"Lights": [{
		"LightID": "1",
		"Position": {
			"x": 17,
			"y": 10
		},
		"Angle": 0,
		"ControlRoute": [{
			"x": "1",
			"y": "0"
		}]
	}],
	"Distracter": [],
	"Layers": {
		"LayerBacks": [{
			"index": 0,
			"Type": 1,
			"ImageName": "BGDecor4",
			"ImageExt": "png",
			"Position": {
				"x": 0,
				"y": 0
			}
		}, {
			"index": 1,
			"Type": 1,
			"ImageName": "BGDecor3",
			"ImageExt": "png",
			"Position": {
				"x": 0,
				"y": 0
			}
		}, {
			"index": 2,
			"Type": 1,
			"ImageName": "BGDecor2",
			"ImageExt": "png",
			"Position": {
				"x": 0,
				"y": 0
			}
		}, {
			"index": 3,
			"Type": 1,
			"ImageName": "BGCenter",
			"ImageExt": "png",
			"Position": {
				"x": 0,
				"y": 0
			}
		}, {
			"index": 4,
			"Type": 0,
			"RouteID": "1"
		}, {
			"index": 5,
			"Type": 1,
			"ImageName": "BGDecor1",
			"ImageExt": "png",
			"Position": {
				"x": 0,
				"y": 0
			}
		}],
		"LayerFronts": [{
			"index": 0,
			"Type": 3
		}, {
			"index": 1,
			"Type": 4,
			"LightID": "1"
		}]
	}
}


四、注意事项

        如果车到达下一格子节点,则检查停车点需不需要更新,以及变更行车角度

        如果车所在格子节点是最后一格,则跑到终点时要算分并回收车

        如果车Go时所在路线路段的是红灯,则置为Stop并在停车点时停下

        如果车Stop时,

                距离停车点远时,按原来的逻辑加速到最大速度

                接近停车点但还未过则减速(通过摩擦力计算)到0,并置为Waiting

                如果已过停车点,置为Go


        综上所述,

                边缘格子禁止设置任何红绿灯

                停车点设置时不允许有重复


上一篇:在白鹭中使用P2物理引擎

下一篇:无