У вас нет прав на выполнение действия «редактирование этой страницы» по следующей причине:
Текст:
There are many ways to make a sprite appear to '''jump''', depending on how you want a [[sprite]] to and how realistic it looks. This article contains a number of them, categorized from least-realistic to most realistic. The '''key press up key''' is usually used for jumping in games, but sometimes key press Space or even the mouse is used for jumping. ==Simple jumping== The following is commonly used in animations and results in a sprite effectively teleporting upwards, and then downwards again. <scratchblocks> when green flag clicked forever if <key [up arrow v] pressed?> then //typical jumping key change y by (50) wait (0.5) secs change y by (-50) // русский комментарий end </scratchblocks> The below script results in the sprite moving up if the up arrow is pressed. <scratchblocks> when green flag clicked forever if <key [up arrow v] pressed?> then //typical jumping key change y by (5) end </scratchblocks> It was used in the Scrolling Demo [[project]] by [[Sample Projects|SampleProjectsTeam]]. Another jumping method which works very effectively and realistic is this. <scratchblocks> when green flag clicked forever if <key [up arrow v] pressed?> then //typical jumping key repeat (10) change y by (20) end repeat (10) change y by (-20) end </scratchblocks> This is very fast but you can adjust the speed by adding a "wait block" before the "change y" block. ==Falling== The following script "teleports" the sprite upwards, and then has it fall back down at a constant rate, until it lands on a platform. <scratchblocks> when green flag clicked forever if <key [up arrow v] pressed?> then //typical jumping key change y by (50) repeat until <touching color [#000000]?> //color of the ground change y by (-5) end end end </scratchblocks> The next script makes the sprite rise up at a constant rate and fall back down at a constant rate. <scratchblocks> when gf clicked forever if <key [up arrow v] pressed?> then //typical jumping key repeat (10) change y by (5) end repeat until <touching color [#000000]?> //color of the ground change y by (-5) end end </scratchblocks> ==Limited Jumps== In most video games, you cannot jump more than a certain number of times, and you cannot jump in midair. This can be implemented in Scratch. The pink blocks labeled "jump" represent a compatible jump script. To allow you to only jump on the ground, use the following script. <scratchblocks> when gf clicked forever if <<key [up arrow v] pressed?> and <touching color [#000000]>> then // typical jumping key, color of the ground change y by (5) jump::custom end </scratchblocks> Double jumping is a common element in video games. Although not possible in real life, these scripts can make you jump up to two times. <scratchblocks> when gf clicked forever if <touching color [#000000]?> then // color of the ground set [jumps v] to [0] end when gf clicked forever if <<key [up arrow v] pressed?> and <touching color [#000000]>> then // typical jumping key change y by (5) // this will keep the first script for resetting the jump count change [jumps v] by (1) jump::custom else if <<key [up arrow v] pressed?> and <(jumps) < [2]>> then // This will keep you from jumping more than twice change [jumps v] by (1) jump::custom end end </scratchblocks> To make the sprite jump up to ''n'' times, change the ''2'' to an ''n''. ==Realistic Jumping== To make a simple jumping game (not to be confused with [[platformer]]), follow this script: <scratchblocks> when green flag clicked go to x: [*input*] y: [*input*] set [y speed v] to [0] //This is just for setting everything up </scratchblocks> Then enter this snippet of code: <scratchblocks> when [space v] key pressed set [y speed v] to [*input*] repeat (((y speed) * (2)) + (1)) change y by (y speed) change [y speed v] by [-1] end </scratchblocks> If one of the scripts do not work, it can be changed. ==Physically Accurate Jumping== ===With Ground Detection=== A more realistic effect for jumping commonly used in games is the following, using a [[variable]] to control the vertical speed of a sprite (simulating gravity) is this: <scratchblocks> when green flag clicked set [y speed v] to [0] //How fast the sprite is moving upwards. forever change y by (y speed) when green flag clicked forever ...//Check if the player is on the ground. if <touching color [#000000]?> then // The color of the platforms. set [y speed v] to (0) ...//Check if the player wants to jump. if <key [up arrow v] pressed?> then ...//Jump! set [y speed v] to (9.9) end end change [y speed v] by (-0.5) // Gravity </scratchblocks> ===Without Ground Detection=== If one does not need to sense the ground and simply want a realistic, gravitational jump, that will end at the starting point, the following script can replicate the jump: <scratchblocks> when gf clicked forever if <key [up arrow v] pressed?> then set [y vel v] to (10) repeat (20) change y by (y vel) change [y vel v] by (-1) //simulates gravity end end </scratchblocks> ==See Also== * [[Simulating Gravity]] * [[Velocity]] * [[Physics Engine]] [[Category:Scripting Tutorials]]
Записать страницу Отменить