查看: 1487|回复: 8
打印 上一主题 下一主题

角色的动作3.1---射击游戏系列教程之三

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

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

跳转到指定楼层
楼主
发表于 2011-11-21 15:17:00 |只看该作者 |倒序浏览




           前面两节教程中,我们实现了对角色的移动控制及摄像机跟随,不过我们发现角色并没有行走的动作,接下来我们来实现角色的各种动作,当然,完全是通过贴图实现的。
         

           Got your mind wrapped around the last part? I know it can be really tricky and confusing sometimes
           

           but I hope you're doing well!
           

           This next part isn't too important to understand, I am animating a sprite sheet, if you're a Unity 3D user
           

           you're more than likely going to be animating with a 3D model which is a lot more simple than
           

           animating a sprite sheet and requires less code to accomplish. However I shall be explaining how to
           

           animate a sprite sheet in this tutorial. Don't worry if you don't understand the ProcessAnimation()
           

           function, see if you can understand the rest though as that will be very useful.First add the following code. And below I shall explain some of new variables we'll be using
         

           让一个平面角色动起来有一定的难度,在unity3d中,相比让一个真正的角色模型动起来,后者要容易的多。下面逐步对实现过程进行讲解,其中要用到一个关键的函数 ProcessAnimation(),首先我们来看下面的代码,声明一些新的变量。uke原创,转载请注明出处:
           
            www.unity3d8.com
           


           // calculation variables (variables used for calculation)
           

           private Vector3 tempVector;
           

           private Vector3 tempVector2;
           

           private int i;
           

           // animation variables (variables used for processing aniamtion)
           

           public float animationFrameRate = 11f; // how many frames to play per second
           

           public float walkAnimationMin = 1; // the first frame of the walk animation
           

           public float walkAnimationMax = 10; // the last frame of the walk animation
           

           public float standAnimationMin = 11; // the first frame of the stand animation
           

           public float standAnimationMax = 20; // the last frame of the stand animation
           

           public float meleeAnimationMin = 22; // the first frame of the melee animation
           

           public float meleeAnimationMax = 30; // the last frame of the melee animation
           

           public float spriteSheetTotalRow = 5; // the total number of columns of the sprite sheet
           

           public float spriteSheetTotalHigh = 4; // the total number of rows of the sprite sheet
           

           private float frameNumber = 1; // the current frame being played,
           

           private float animationStand = 0; // the ID of the stand animation
           

           private float animationWalk = 1; // the ID of the walk animation
           

           private float animationMelee = 2; // the ID of the melee animation
           

           private float currentAnimation = 1; // the ID of the current animation being played
           

           private float animationTime = 0f; // time to pass before playing next animation
           

           private Vector2 spriteSheetCount; // the X, Y position of the frame
           

           private Vector2 spriteSheetOffset; // the offset value of the X, Y coordinate for the texture
           

           There are many variables here, I have added a comment to explain the use of each one. They are there
           

           to create a lot of flexibility with the sprite sheet animation system I am using.
         

           以上众多变量主要是来控制角色动画的状态,其实就是控制序列帧的播放,包括速率、起始帧,结束帧等等。
           

           Notice I have defined an int variable 'i'. And int variable is an integer and is restricted to having no
           

           decimal numbers. In this case I don't need decimals as I am either on frame number 1 or 2 etc. I have
           

           made definitions such as 'animationWalk = 1;' The only purpose of this is for better code readability,
           

           instead of typing:
           

           if (currentAnimation == 1)
           

           I can type:
         

           if (currentAnimation == animationWalk)
           

           So instead of having to guess what the number '1' means I know it means the walk animation now. It's
           

           good practice to do that for code so you can understand what is going on when you look at a piece of
           

           code you haven't seen in weeks.
         

           以上部分主要对上面变量的一些具体说明。略过
         

           接下来要在update()函数中添加一个重要的新函数HandleAnimation(),此函数即是负责角色序列帧的控制的。
           

           Add the HandleAnimation function to your update function:
           

           void Update () {
           

           FindInput();
           

           ProcessMovement();
           

           HandleAnimation();
           

           if (thisIsPlayer == true)
           

           {
           

           HandleCamera();
           

           }
           

           }
           

           After your HandleCamera function add the following code:
         
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

沙发
发表于 2012-2-5 23:31:17 |只看该作者
我看看就走,你们聊!
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

板凳
发表于 2012-2-22 23:18:12 |只看该作者
精典,学习了!
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

地板
发表于 2012-4-28 23:23:04 |只看该作者
读铁系缘分,顶铁系友情
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

5#
发表于 2012-5-17 23:26:00 |只看该作者
赞一个,哈哈
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

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

6#
发表于 2012-7-7 23:25:29 |只看该作者
非常感谢,管理员设置了需要对新回复进行审核,您的帖子通过审核后将被显示出来,现在将转入主题
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

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

7#
发表于 2012-7-30 23:24:35 |只看该作者
心中有爱,爱咋咋地
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

8#
发表于 2012-8-8 23:50:53 |只看该作者
不错不错,收藏了
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

9#
发表于 2013-1-31 23:22:20 |只看该作者
水……生命之源……灌……
回复

使用道具 举报

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

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

GMT+8, 2024-11-10 18:21 , Processed in 0.121904 second(s), 29 queries .

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

© 2008-2019 Narkii Inc.

回顶部