找回密码
 注册
X系列官方授权正版
搜索
查看: 2659|回复: 2

[原创] [教程]玩转游戏-制定你自己的游戏规则(简单地形)

[复制链接]
发表于 2008-2-15 21:59:40 | 显示全部楼层 |阅读模式
玩转游戏-制定你自己的游戏规则(简单地形)


今天我们要讲的是传说中的浮云。
传说中的浮云不但具有遮蔽视线的作用,更能当作烟花使用-.-
关于尘云的基本性质我们就不多加讨论了。
我们真正的目的是利用尘云来实现一些更为离奇的地形效果。

作为地图中近乎装饰的存在,浮云一直扮演着偷渡蛇头的勾当。
而我们今天要做的就是让这个蛇头更加的湿搭搭粘忽忽。
首先我们按照个人喜好完成一张地图,其中有比较大量的尘云存在。
(具体地图的制作在此不做详细阐述,有需要的同学请自行翻阅相关教程。)

我们将云分为两类:
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离开了云而速度没有还原的情况发生。
最后将此函数加载为规则,一张拥有加速和减速云效果的地图就完成了。
同样也可以制作其他的地图,只要遵循最初对云的命名规范,就可以在无限张地图上运用这样的地形规则。

评分

参与人数 1UCC +20 收起 理由
白衣 + 20 我认为此帖很有意义

查看全部评分

发表于 2008-2-21 16:18:07 | 显示全部楼层
HW弹性蛮大的嘛,难怪有不少好mods....
回复

使用道具 举报

 楼主| 发表于 2008-2-21 16:44:31 | 显示全部楼层
只能说还可以吧...
现在愿意做代码的人太少了
台湾的班图西撰史者是这方面的强人.
大陆的话9CCN很强.
国外的complex是注重代码的典范.

[ 本帖最后由 xangle13 于 2008-2-21 16:46 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站