Unity2D入门(五):角色跳跃、动画切换

一、角色跳跃的实现
我们用GetButtonDown函数来获得键盘输入

public float jumpforce;
 if (Input.GetButtonDown("Jump") )
    {
        rb.velocity = new Vector2(rb.velocity.x, jumpforce * Time.deltaTime);
    }

不过这样并不完善,因为在这种情况下角色可以不落地一直跳,后面我们会为他添加限制条件。

二、动画切换
目前角色已经有三种运动状态了:奔跑、静止、跳跃(这个状态其实要分成两个子状态:跳起和下落),按照笔记(三)中的方法,为角色添加好这几种状态的动画。
其实和写代码一样,判断运动状态间的转换也是需要条件的,打开Animator窗口下的Parameters窗口,为动画切换添加判断条件参数:float类型的running角色移动的速度,bool类型的jumping判断角色是否处在跳起状态,bool类型的falling判断是否处在下落状态,以及bool类型的idle判断角色是否处在静止状态。
来到BaseLayer窗口,可以看到我们为角色添加的动画状态,点击动画->右键->Make Transition->引出一条箭头指向转换后的动画。

idle
run
jump
fall

设置完成后点击箭头,看到Inspector窗口中的Conditions来为每一个箭头添加转换的条件参数。
idle->jump:jumping true;
idle->run:running Greater 0.1;
run->idle:running Less 0.1;
run->jump:jumping true;
jump->fall:falling true
jumping false;
fall->idle:falling false
idle true;

代码实现部分

	public float jumpforce; //角色跳跃力度
	public float speed; //角色的速度
	public Rigidbody2D rb; //获取角色刚体组件
	public Animator anim; //获取角色动画组件
	
	void Start(){
		anim = GetComponent<Animator>();
		}
	void Update(){
		SwitchAnim();
		}
	void Movement(){
    	float facedirection = Input.GetAxisRaw("Horizontal");	//控制角色面朝方向用
    	float Horizontalmove=Input.GetAxis("Horizontal");
    	//角色移动
    	if (Horizontalmove != 0)
    	{
        	rb.velocity = new Vector2(Horizontalmove * speed*Time.deltaTime, 	rb.velocity.y);
            anim.SetFloat("running", Mathf.Abs(facedirection));
	    }
    	if (facedirection != 0)
    	{
        	transform.localScale = new Vector3(facedirection, 1, 1);
    	}
    	//角色跳跃
    	if (Input.GetButtonDown("Jump") )
    	{
        	rb.velocity = new Vector2(rb.velocity.x, jumpforce * Time.deltaTime);
        	anim.SetBool("jumping", true);
    	}
	}
	void SwitchAnim(){
		anim.SetBool(“idle”,false);
		if(anim.GetBool(“jumping”){
			if(rb.velocity.y<0){
				anim.SetBool(“jumping”,false);
				anim.SetBool(“falling”,true);
				}
			}
		if(Mathf.Abs(rb.velocity.x)<0.1f){
			anim.SetBool(“idle”,true);
			anim.SetFloat(“running”,0);
			}
		}
  • 26
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值