实现角色跳跃

使用math.sin函数可以模拟角色的跳跃。

如下图所示当sin(0)  = 0,sin(pi)=0


取得跳跃高度的函数定义如下:

BounceHeight是角色最高可以跳的高度,当math.sin()值为1的时候,就可以达到最大值。

bounceRate 则指跳跃的速度,该值越大则跳跃越慢

currentBounce这个值则是由用户循环增大的,即由0,增加到bounceRate,也就是说可以实现sin函数由0-1-0这个变化过程。

def getBounceAmount(currentBounce, bounceRate, bounceHeight):
    # Returns the number of pixels to offset based on the bounce.
    # Larger bounceRate means a slower bounce.
    # Larger bounceHeight means a higher bounce.
    # currentBounce will always be less than bounceRate
    return int(math.sin( (math.pi / float(bounceRate)) * currentBounce ) * bounceHeight)


跳跃函数例子:

    #当角色在移动或者playerObj['bounce']!=0,即正在跳跃中时,则+1,

   #也就是说即使不是移动状态的,如果已经跳起则必须跳完,即完成0》1》0的跳跃过程。

if (moveLeft or moveRight or moveUp or moveDown) or playerObj['bounce'] != 0:
	playerObj['bounce'] += 1



   #CurrentBounce+1加到BounceRate ,这样以完成sin(pi/BounceRate×currentBounce)变化过程 *0》1》0
   
 if playerObj['bounce'] > BOUNCERATE:
 	playerObj['bounce'] = 0 # reset bounce amount


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值