|
发表于 2009-12-12 19:46:49
|
显示全部楼层
需要写的话……
估计是没什么时间(我跟amo一样考研……)
两种都不是很难
不过有几个问题我需要了解
如果你有很好的T的基础
如果你能看懂我的制作方法
估计应该能够自己做出来一、单一英雄
类似网游戏一样,我只能有一个单位(这里指英雄),我的英雄走到任何地点都会显示出目前的坐标值。 这个有个刷新速度的问题
就是多少秒计算一次坐标
这个速度越快,计算量越大
另外是显示方法,漂浮文字还是输出字符还是就要个值?
这个我不清楚,无论任何方法,都是获得结果后显示下
至于显示坐标,很简单,如果直接采用地图的坐标,那么直接用GetUnitX,GetUnitY就可以获得
如果你稍微懂一点J(看一下教程吧)直接用TimerStart的方法调用
最简单的以左下角文字的方法反馈的很简单
[jass]
function GetXY takes nothing returns nothing
call BJDebugMsg("坐标为:(" +R2S(GetUnitX(udg_Hero)) + "," + R2S(GetUnitY(udg_Hero)) + ")")
endfunction
function StartShow takes nothing returns nothing
call TimerStart(udg_UseTimer,udg_Times,true,function GetXY)
endfunction
[/jass]
开始显示时执行StartShow就行了
udg_Hero是显示的英雄,udg_UseTimer使用的timer,udg_Times刷新时间
BJDebug的显示方法是最简单的,按你需要的修改就行了
停止显示用停止Timer或者直接删除Timer的方法都行
如果重新开始,那么用删除新建的方法吧
二、多个英雄(同上)
当我选择一个英雄时,显示该单的坐标,没有选择到的则不显示。 显示一次还是如一个英雄般的刷新?
一次的话很简单
选择单位事件+判断单位类型(或者玩家所属等保证显示的是允许显示的单位)的条件+GetUnitX,GetUnitY
然后显示获得的real值即可
如果是一直刷新的
那么用选择单位替换udg_Hero的值的方法就可以了
同样的事件和条件
然后执行设置udg_Hero = 选择的单位即可
我只能这样说
过快的刷新速度,
以及对GetUnitX,GetUnitY的运算(比如R2I等)过多(越多越严重)
或者复杂的显示方式(比如多面板)
都会影响游戏的运行效率
就是会卡 |
|