首 页 | 多媒体开发 | 合成 | 图象设计 | 动画制作 | 音频编辑 | 网站建设 | 新书上市 | 虚拟主机
论 坛 | 加入人才库 | 下载中心 | 作品展示 | 项目承接 | 光盘压制 | 企业展台 | 原创投稿 | 认证培训
bryce
 

制作街头格斗风格的游戏()

作者:Adam Montandon(作者); w_jm (翻译)
来源:www.stormsky.com/www.mobiusclub.com

制作Karin的格斗
我们将为每个角色制作一个行为,
.先给Karin制作行为,把这些代码作为一个行为并拖放到Karin所在的精灵通道4上。
property mycounter --Karins counter for animation
property myQlist --Karins list of qued input
property health --Karins health
property spritenum --karins sprite number (4)

on beginsprite me
  sprite(spritenum).mycounter = 0 
  sprite(spritenum).myqlist = [#blank,#blank] --This list has 2 positions, both blank
  sprite(spritenum).health = 200 --full health, 200 points
end

--This code is called when the Karin's punch key is pressed
--It replaces a blank position in the list with the Punch command
on punch me
  if sprite(spritenum).myQlist[1] = #blank then
    sprite(spritenum).myQlist[1] = #punch
    sprite(spritenum).mycounter = 0
  else
    sprite(spritenum).myQlist[2] = #punch
  end if
end

--This code is called when the Karin's kick key is pressed


--It replaces a blank position in the list with the Kick command
on kick me
  if sprite(spritenum).myQlist[1] = #blank then
    sprite(spritenum).myQlist[1] = #kick
    sprite(spritenum).mycounter = 0
  else
    sprite(spritenum).myQlist[2] = #kick
  end if 
end

--This code is called when the Karin's left key is pressed
--It replaces a blank position in the list with the left command 
on left me
  if sprite(spritenum).myQlist[1] = #blank then
    sprite(spritenum).myQlist[1] = #left
    sprite(spritenum).mycounter = 0
  else
    sprite(spritenum).myQlist[2] = #left
  end if
end

--This code is called when the Karin's right key is pressed
--It replaces a blank position in the list with the right command 
on right me
  if sprite(spritenum).myQlist[1] = #blank then
    sprite(spritenum).myQlist[1] = #right
    sprite(spritenum).mycounter = 0
  else
    sprite(spritenum).myQlist[2] = #right
  end if
end

--here is where the action takes place.
on exitframe me
  
  
  case sprite(spritenum).myQlist[1] of
    #blank:
      a = (1) + sprite(spritenum).mycounter mod 8 --8 is the number of animation frames 
      sprite(spritenum).member = (member a of castlib("karin"))
      sprite(spritenum).mycounter = sprite(spritenum).mycounter + 1--advances the counter
      if sprite(spritenum).mycounter/8 = 1 then
        sprite(spritenum).mycounter = 0 --resets the counter after the animation has played
        --shift list
        sprite(spritenum).myqlist[1] = sprite(spritenum).myqlist[2]
        sprite(spritenum).myqlist[2] = #blank
      end if
      
    #punch:
      a = (13) + sprite(spritenum).mycounter mod 6 --6 is the number of animation frames
      sprite(spritenum).member = (member a of castlib("karin"))
      sprite(spritenum).mycounter = sprite(spritenum).mycounter + 1
      if sprite(spritenum).mycounter/6 = 1 then
        sprite(spritenum).mycounter = 0
        --shift list
        sprite(spritenum).myqlist[1] = sprite(spritenum).myqlist[2]
        sprite(spritenum).myqlist[2] = #blank
      end if
      --Collision
      if sprite(spritenum).mycounter/3.0 = 1 then 
        --the 3rd frame of animation is tested for collision
        if sprite 4 intersects 7 then
          sprite(7).health = sprite(7).health - 8 --takes 8 points off of DJ's health
          sprite(7).locz = 8 --Moves DJ behind Karin
          sprite(spritenum).locz = 9 --Moves Karin ahead of DJ
        end if
      end if
      
      
      
    #kick:
      a = (9) + sprite(spritenum).mycounter mod 4 --4 is the number of animation frames
      sprite(spritenum).member = (member a of castlib("karin"))
      sprite(spritenum).mycounter = sprite(spritenum).mycounter + 1
      if sprite(spritenum).mycounter/4 = 1 then
        sprite(spritenum).mycounter = 0
        --shift list
        sprite(spritenum).myqlist[1] = sprite(spritenum).myqlist[2]
        sprite(spritenum).myqlist[2] = #blank
      end if
      --collision
      if sprite(spritenum).mycounter/3.0 = 1 then
        --the 3rd frame of animation is tested for collision 
        if sprite 4 intersects 7 then
          sprite(7).health = sprite(7).health - 12 --takes 12 points off of DJ's health
          sprite(7).locz = 8 --Moves DJ behind Karin
          sprite(spritenum).locz = 9 --Moves Karin ahead of DJ
        end if
      end if
      
      
    #left:
      a = (29) + sprite(spritenum).mycounter mod 10 --10 is the number of animation frames
      sprite(spritenum).member = (member a of castlib("karin"))
      sprite(spritenum).mycounter = sprite(spritenum).mycounter + 1
      --the next line moves Karin back 4 pixels per frame
      sprite(spritenum).loch = sprite(spritenum).loch - 4
      if sprite(spritenum).mycounter/10 = 1 then
        sprite(spritenum).mycounter = 0
        --shift list
        sprite(spritenum).myqlist[1] = sprite(spritenum).myqlist[2]
        sprite(spritenum).myqlist[2] = #blank
        --check to see if you should turn
        if sprite(spritenum).loch < sprite(7).loch then
          sprite(spritenum).fliph = 0
        end if
      end if
      
    #right:
      a = (19) + sprite(spritenum).mycounter mod 10
      sprite(spritenum).member = (member a of castlib("karin"))
      sprite(spritenum).mycounter = sprite(spritenum).mycounter + 1
      --the next line moves Karin forward 4 pixels per frame 
      sprite(spritenum).loch = sprite(spritenum).loch + 4
      if sprite(spritenum).mycounter/10 = 1 then
        sprite(spritenum).mycounter = 0
        --shift list
        sprite(spritenum).myqlist[1] = sprite(spritenum).myqlist[2]
        sprite(spritenum).myqlist[2] = #blank
        --check to see if you should turn
        if sprite(spritenum).loch > sprite(7).loch then
          sprite(spritenum).fliph = 1
        end if
      end if
      
  end case
end


(一)(二)(三)(四)

.