实现角色跳跃

使用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
    评论
在Unity中实现角色跳跃,你可以按照以下步骤进行操作: 1. 添加一个刚体组件到角色对象上。可以通过在Unity编辑器中选中角色对象,然后点击“Add Component”按钮,在搜索栏中输入“Rigidbody”,选择添加刚体组件。 2. 在角色对象上添加一个碰撞体组件。同样,在Unity编辑器中选中角色对象,点击“Add Component”按钮,在搜索栏中输入“Capsule Collider”(或者其他适合的碰撞体类型),选择添加碰撞体组件。 3. 创建一个脚本来控制角色跳跃行为。右键点击Hierarchy面板中的角色对象,选择“Create Empty”来创建一个空对象,将其命名为“JumpController”。然后,将该脚本附加到JumpController对象上。 4. 在JumpController脚本中,添加以下代码实现跳跃行为: ```csharp using UnityEngine; public class JumpController : MonoBehaviour { public float jumpForce = 5f; private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) // 监听空格键按下事件 { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); // 施加向上的力来实现跳跃 } } } ``` 5. 将JumpController对象拖拽到角色对象上,作为其子对象,并在Inspector面板中将其Position属性调整为合适的位置。 现在,当你按下空格键时,角色对象将受到向上的力,并实现跳跃效果。你可以根据需要调整跳跃力的大小(jumpForce变量)来控制角色跳跃高度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值