ShockWave 3D 制作系列教程之七

人物控制与关键帧
本例主要介绍使用DIRECTOR播放关键帧的技巧 。由于本人对3DSMAX的CHATACTOR STUDIO并不熟悉,故当中的人物动作全使用关键帧控制 。
制作步骤:
1、使用3DMAX输入一个小人和地面,并在人物的脚部添加一个虚拟物体,具体如下图所示

2、在3DMAX里制作人物动作,包括行走、跳和挥锤然后输出W3D文件并导入DIRECTOR
3、在DIRECTOR中把W3D演员放到舞台上,并单击右键为其添加SCRIPT,如下图所示:
4、SCRIPT内容如下:
property pscene,modellist
property keyisdown,keyofjump,keyofhit
on beginsprite me
--定义场景
pscene=member("scene")
--重设场景
pscene.resetworld()
--定义一个变量其初始值,此变量主要判断是否按键
keyisdown=false
--把小人的各部分名称加入数组
modellist=["body","hand1","hand2","leg1","leg2","hammer"]
--对小人的各部分进行处理
repeat with i=1 to 6
--各部分都暂停播放
pscene.model(modellist[i]).keyframePlayer.pause()
--把每个部件都以子物体的方式加到虚拟物体上
pscene.model("manbox").addchild(pscene.model(modellist[i]))
end repeat
end
on exitframe me
--暂停播放行走动画
if pscene.model("hand1").keyframePlayer.currentTime<50 and keyisdown=false then
repeat with i=1 to 6
pscene.model(modellist[i]).keyframePlayer.pause()
end repeat
end if
--暂停播放跳跃动画
if pscene.model("hand1").keyframePlayer.currentTime<700 and keyofjump=true then
repeat with i=1 to 6
pscene.model(modellist[i]).keyframePlayer.pause()
end repeat
keyofjump=false
end if
--播放跳跃动画
if keypressed("z") and keyofjump=false then
repeat with i=1 to 6
pscene.model(modellist[i]).keyframePlayer.play(modellist[i] & "-Key",1, 667, 1166,1.0000)
end repeat
keyisdown=true
keyofjump=true
end if
--停止播放挥锤动画
if pscene.model("hand1").keyframePlayer.currentTime<1200 and keyofhit=true then
repeat with i=1 to 6
pscene.model(modellist[i]).keyframePlayer.pause()
end repeat
keyofhit=false
end if
--播放挥锤动画
if keypressed("x") and keyofhit=false then
repeat with i=1 to 6
pscene.model(modellist[i]).keyframePlayer.play(modellist[i] & "-Key",1, 1167, 1500,1.0000)
end repeat
keyisdown=true
keyofhit=true
end if
--播放行走动画
if keypressed(126) or keypressed(125) then
walk
end if
end
--按键离开时
on keyup me
keyisdown=false
end
--行走
on walk
if keyisdown=false then
--播放行走的关键帧
repeat with i=1 to 6
pscene.model(modellist[i]).keyframePlayer.play(modellist[i] & "-Key",1, 0, 666,1.0000)
end repeat
keyisdown=true
end if
end

    推荐阅读