- UID
- 9701
- UCC
-
- 声望
-
- 好评
-
- 贡献
-
- 最后登录
- 1970-1-1
|
玩转游戏-制定你自己的游戏规则(简单地形)
今天我们要讲的是传说中的浮云。
传说中的浮云不但具有遮蔽视线的作用,更能当作烟花使用-.-
关于尘云的基本性质我们就不多加讨论了。
我们真正的目的是利用尘云来实现一些更为离奇的地形效果。
作为地图中近乎装饰的存在,浮云一直扮演着偷渡蛇头的勾当。
而我们今天要做的就是让这个蛇头更加的湿搭搭粘忽忽。
首先我们按照个人喜好完成一张地图,其中有比较大量的尘云存在。
(具体地图的制作在此不做详细阐述,有需要的同学请自行翻阅相关教程。)
我们将云分为两类:
1.能够加快其中ship移动速度的云
2.能够减缓其中ship移动速度的云
分别命名为:
1.dustcloud_speedup
2.dustcloud_speeddown
同时,我们需要对这两种云做一些视觉上的区分。
我们将能够提高速度的云设置为红色,将能够降低速度的云设置为绿色。
最重要就是相关规则的书写,我们将死亡竞赛的相关规则拓展成一种新的规则,名称为:"地形demo"。
首先需要有能够承载这些在云中ship的集合
我们做如下处理:
function initlizeTerrain()
SobGroup_Create("InCloudSpeedUpGroup") --创建组InCloudSpeedUpGroup
SobGroup_Create("InCloudSpeedDownGroup") --创建组InCloudSpeedDownGroup
end
将所需要做的工作写成一个函数,在规则OnInit时进行调用,能够使得整体代码看上去更加的简洁。
当准备工作做完后,我们就需要开始实现真正能够使得云能拥有其相应特性的代码了。
function terrain()
local playerIndex = 0
local playerCount = Universe_PlayerCount()
while (playerIndex < playerCount) do
if (Player_IsAlive(playerIndex) == 1) then
SobGroup_SetSpeed("Player_Ships"..playerIndex, 1) --重置玩家速度
SobGroup_Clear("InCloudSpeedUpGroup") --清空组InCloudSpeedUpGroup
SobGroup_Clear("InCloudSpeedDownGroup") --清空组InCloudSpeedDownGroup
SobGroup_GetSquadronsInsideDustCloud("InCloudSpeedUpGroup", "dustcloud_speedup", playerIndex) --汇总云dustcloud_speedup内隶属于玩家playerIndex的单位
SobGroup_GetSquadronsInsideDustCloud("InCloudSpeedDownGroup", "dustcloud_speeddown", playerIndex) --汇总云dustcloud_speeddown内隶属于玩家playerIndex的单位
if(SobGroup_Count("InCloudSpeedUpGroup")>0)then
SobGroup_SetSpeed("InCloudSpeedUpGroup", 1.5) --设置加速
end
if(SobGroup_Count("InCloudSpeedDownGroup")>0)then
SobGroup_SetSpeed("InCloudSpeedDownGroup", 0.5) --设置减速
end
end
playerIndex = playerIndex + 1
end
end
通过函数SobGroup_GetSquadronsInsideDustCloud,我们将云内的ship实时的汇总进我们最先创建的两个组内,并使用SobGroup_SetSpeed函数对其进行速度的更改。
当然,最开始的时候不要忘了把所有ship的速度重置为1。否则会出现ship离开了云而速度没有还原的情况发生。
最后将此函数加载为规则,一张拥有加速和减速云效果的地图就完成了。
同样也可以制作其他的地图,只要遵循最初对云的命名规范,就可以在无限张地图上运用这样的地形规则。 |
评分
-
查看全部评分
|