Unity3D人物角色连招(只放了三招)

效果预览: Demo展示(flash版本 文件3M,先等待一下) Demo展示(webplayer版本 文件1.7M,先等待一下)
using UnityEngine;
using System.Collections;

public class PlayerAttackController : MonoBehaviour {
	//记录当前攻击动画;
	AnimationClip currentAttack;
	//获取人物动画组件;
	Animation playerAnimation;
	//动画标签;
	public enum ActionState
	{
		Attack_0,
		Attack_1,
		None
	}
	//记录当前动画标签;
	private ActionState actionState = ActionState.None;
	
	/**
	 * 攻击的逻辑
	 */
	void AttackLogic(){
		if (Input.GetButtonDown("Fire1")){
			if (actionState != ActionState.Attack_0 && actionState != ActionState.Attack_1) {
				actionState = ActionState.Attack_0;
			}else if (actionState == ActionState.Attack_0 && playerAnimation[currentAttack.name].time > 1.0f){
				actionState = ActionState.Attack_1;
			}
		}
	}
	
	/**
	 * 攻击套路选择
	 */
	void Attacks (){
		float delayTime =0.0f;
		switch (actionState){
			case ActionState.Attack_0:
				delayTime = -0.1f;
				playerAnimation.CrossFade("Attack", 0.15f);
				currentAttack = playerAnimation["Attack"].clip;
				break;
				
			case ActionState.Attack_1:
				delayTime = -0.1f;
				playerAnimation.CrossFade("Attack01", 0.15f);
				currentAttack = playerAnimation["Attack01"].clip;
				break;
				
			case ActionState.None:
				break;
		}
		
		//Switch to default if an animation is almost over
		if (playerAnimation[currentAttack.name].time > (playerAnimation[currentAttack.name].length +delayTime)){
			actionState = ActionState.None;
			currentAttack = playerAnimation["Idle"].clip;
		}
	}
	
	void Awake(){
		//程序开启前,获取人物动画组件;
		playerAnimation = GetComponent <Animation>() as Animation;
	}
	
	void Start () {
		if (playerAnimation.clip) {
			currentAttack = playerAnimation.clip;
		} else {
			currentAttack = playerAnimation["Idle"].clip;
		}
	}
	
	// Update is called once per frame
	void Update () {
		if (currentAttack != null){
			AttackLogic();
			Attacks();
		}
	}
}

转载于:https://my.oschina.net/fengLao/blog/94426

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值