|
制作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
|