查看: 2263|回复: 4
打印 上一主题 下一主题

[其他] Unity3D角色连招脚本

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-6-26 20:05:43 |只看该作者 |倒序浏览

找了很久都找不到相关的角色连招脚本,唯有自己苦想,功夫不负有心人,今天花了一个下午写了段角色连招,效果还不错,特分享一下。有需要的同学可以拿去使,大鸟可以顺便帮我修改下不足的地方······用c#写的
  1. using UnityEngine;
  2. using System.Collections;

  3. public class PlayerAttackController : MonoBehaviour {
  4.         //记录当前攻击动画;
  5.         AnimationClip currentAttack;
  6.         //获取人物动画组件;
  7.         Animation playerAnimation;
  8.         //动画标签;
  9.         public enum ActionState
  10.         {
  11.                 Attack_0,
  12.                 Attack_1,
  13.                 None
  14.         }
  15.         //记录当前动画标签;
  16.         private ActionState actionState = ActionState.None;
  17.         
  18.         /**
  19.          * 攻击的逻辑
  20.          */
  21.         void AttackLogic(){
  22.                 if (Input.GetButtonDown("Fire1")){
  23.                         if (actionState != ActionState.Attack_0 && actionState != ActionState.Attack_1) {
  24.                                 actionState = ActionState.Attack_0;
  25.                         }else if (actionState == ActionState.Attack_0 && playerAnimation[currentAttack.name].time > 1.0f){
  26.                                 actionState = ActionState.Attack_1;
  27.                         }
  28.                 }
  29.         }
  30.         
  31.         /**
  32.          * 攻击套路选择
  33.          */
  34.         void Attacks (){
  35.                 float delayTime =0.0f;
  36.                 switch (actionState){
  37.                         case ActionState.Attack_0:
  38.                                 delayTime = -0.1f;
  39.                                 playerAnimation.CrossFade("Attack", 0.15f);
  40.                                 currentAttack = playerAnimation["Attack"].clip;
  41.                                 break;
  42.                                 
  43.                         case ActionState.Attack_1:
  44.                                 delayTime = -0.1f;
  45.                                 playerAnimation.CrossFade("Attack01", 0.15f);
  46.                                 currentAttack = playerAnimation["Attack01"].clip;
  47.                                 break;
  48.                                 
  49.                         case ActionState.None:
  50.                                 break;
  51.                 }
  52.                
  53.                 //Switch to default if an animation is almost over
  54.                 if (playerAnimation[currentAttack.name].time > (playerAnimation[currentAttack.name].length +delayTime)){
  55.                         actionState = ActionState.None;
  56.                         currentAttack = playerAnimation["Idle"].clip;
  57.                 }
  58.         }
  59.         
  60.         void Awake(){
  61.                 //程序开启前,获取人物动画组件;
  62.                 playerAnimation = GetComponent <Animation>() as Animation;
  63.         }
  64.         
  65.         void Start () {
  66.                 if (playerAnimation.clip) {
  67.                         currentAttack = playerAnimation.clip;
  68.                 } else {
  69.                         currentAttack = playerAnimation["Idle"].clip;
  70.                 }
  71.         }
  72.         
  73.         // Update is called once per frame
  74.         void Update () {
  75.                 if (currentAttack != null){
  76.                         AttackLogic();
  77.                         Attacks();
  78.                 }
  79.         }
  80. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-6-26 21:21:31 |只看该作者
感谢分享这个!
回复

使用道具 举报

115

主题

3

听众

5676

积分

高级设计师

Rank: 6Rank: 6

纳金币
7268
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-6-26 22:40:37 |只看该作者
感谢分享这个!
回复

使用道具 举报

wucnj    

1

主题

1

听众

3160

积分

中级设计师

Rank: 5Rank: 5

纳金币
1065
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2014-6-27 13:20:32 |只看该作者
感谢分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-9-24 07:25 , Processed in 0.088052 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部