找回密码
 点一下
查看: 2548|回复: 10

[疑问]给每个玩家锁定视角会使游戏变卡吗

[复制链接]
发表于 2007-5-19 21:43:37 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-5-21 09:25:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-5-21 15:59:16 | 显示全部楼层
[s:41]  [s:41]  [s:41]

    ........
回复

使用道具 举报

发表于 2007-5-23 07:24:09 | 显示全部楼层
[s:37]
回复

使用道具 举报

发表于 2007-5-23 22:21:02 | 显示全部楼层
现在的人啊,动不动就用J,看不懂...............
回复

使用道具 举报

 楼主| 发表于 2007-5-24 00:46:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-5-27 00:27:35 | 显示全部楼层
J的开发效率很低
但是更灵活,更省资源,更方便重用
用T,一个选取单位组做动作的T,转成J后你会发现它会自动生成很多类似的函数,而每个函数都要占用一定的内存空间,其效率之低可想而知
回复

使用道具 举报

发表于 2007-5-27 01:41:49 | 显示全部楼层
我也弄过,不过很不好看.
我当时想做的是第一人称视角,最后狂卡.
我想可能是在单位走路或是改变方向时,要用一个timer改变镜头,
这个timer的时间设大了,看上去不好看,设小了就卡.
回复

使用道具 举报

发表于 2007-5-27 18:49:41 | 显示全部楼层
首先。你的udg谁知道是什么东西。
其次。调用的时间不同的话。比如0.0001。那当然会卡。你当不用资源的啊?
回复

使用道具 举报

发表于 2007-5-28 08:43:12 | 显示全部楼层
猜测是镜头函数比较占资源,而以上函数是人越多负荷就会越大
可以试试下面的函数:

CameraLockForPlayer:设置玩家镜头参数
CameraLockStart :开始或改变锁定周期

[codes=jass]
globals
    gamecache udg_GC
    real udg_Camera_TargetDistance = 0
    real udg_Camera_AngleOfAttack = 0
    real udg_Camera_Roll = 0
    real udg_Camera_Rotation = 0
endglobals

function H2I takes handle h returns integer
    return h
    return 0
endfunction

function I2Tm takes integer i returns timer
    return i
    return null
endfunction

function CameraLock_Func takes nothing returns nothing
    call CameraSetupSetField(CAMERA_FIELD_TARGET_DISTANCE, udg_Camera_TargetDistance, 0.)
    call CameraSetupSetField(CAMERA_FIELD_ANGLE_OF_ATTACK, udg_Camera_AngleOfAttack, 0.)
    call CameraSetupSetField(CAMERA_FIELD_ROLL, udg_Camera_Roll, 0.)
    call CameraSetupSetField(CAMERA_FIELD_ROTATION, udg_Camera_Rotation, 0.)
endfunction

function CameraLockStart takes real R returns nothing
    local integer tm = GetStoredInteger(udg_GC, "CameraLock", "Timer")
    if tm == 0 then
        set tm = H2I(CreateTimer())
        call StoreInteger(udg_GC, "CameraLock", "Timer", H2I(tm))
    endif
    call TimerStart(I2Tm(tm), R, true, function CameraLock_Func)
endfunction

function CameraLockForPlayer takes player P,camerasetup c returns nothing
    if GetLocalPlayer() == P then
        set udg_Camera_TargetDistance = CameraSetupGetField(c, CAMERA_FIELD_TARGET_DISTANCE)
        set udg_Camera_AngleOfAttack = CameraSetupGetField(c, CAMERA_FIELD_ANGLE_OF_ATTACK)
        set udg_Camera_Roll = CameraSetupGetField(c, CAMERA_FIELD_ROLL)
        set udg_Camera_Rotation = CameraSetupGetField(c, CAMERA_FIELD_ROTATION)
    endif
endfunction
[/codes]
回复

使用道具 举报

发表于 2007-5-28 08:48:50 | 显示全部楼层
怎么jass标签又变了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-13 21:04 , Processed in 0.030748 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表