游戏蛮牛学习群(纯技术交流,不闲聊):539178957
新宝娱乐城博彩打不开 手机端
开发者专栏

关注:2261

当前位置:新宝娱乐城博彩打不开 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 3761|回复: 30
发新帖

新宝娱乐: [士郎] 炫酷跑酷教程(完)——人物控制

[复制链接]  [移动端链接]
排名
3
昨日变化

新宝娱乐城博彩打不开 www.sl6cl.com.cn 6578

主题

7096

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
8403
威望
30
注册时间
2013-7-29
在线时间
3375 小时
最后登录
2018-7-23

社区QQ达人活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

跳转到指定楼层
楼主
发表于 2018-5-9 11:32:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
前2篇文章中主要讲解的是如何搭建地图,文本显示,以及简单的人物控制。本期我们从游戏的细节入手,让角色的动作更多,使之更接近一个商业化游戏的完成度。Let's begin:
动作分析:
     通过参照神庙逃亡游戏,我们可以分析出该游戏有一下动作:
1.前跑
2.左右移动
3.左转
4.右转
5.跳跃
6.下滑
     其中1,2已经在第一篇文章的时候实现。3,4虽然没有写出来,但是在第二篇文章的时候就已经实装了,这次会重新讲解一下。本篇文章着重实现5,6功能。
动画状态机:
  工欲善其事必先利其器。在开始动作功能实现之前,先搭建好我们玩家的的动画状态机。选择我们之前新建好的动画控制器,打开Animator视图,将我们需要使用的动作拖入其中。如图:

在旁边的Parameters菜单新建2个BOOL控制开关,并命名为IsJump 与IsSlide.如图:

然后将新建的2个状态应用到动作之上,并去掉Has Exit Time的勾选,如图:
代码实现:
完成上面准备工作后,就可以进行我们的实现环节了。
左转右转功能:
左转右转,就是将玩家自身绕Y轴旋转正或负90度的效果。但是要是在一帧内直接修改完成的话,效果就会很突兀。于是我们使用DoTween插件来完成这个功能,于是先引用Dotween插件。然后在 PlayerController.cs文件中写入以下代码:
[AppleScript] 纯文本查看 复制代码
if (Input.GetKeyDown(KeyCode.J) && isTurnleftEnd)                              //如果按下J键且左转完成
        {
            isTurnleftEnd = false;                                              //更新转向状态
            transform.Rotate(Vector3.up,-90);
            Quaternion tmpQuaternion = transform.rotation;                      //计算转向后的四元数并保存
            transform.Rotate(Vector3.up, 90);                                   //角度回滚[/font][/color][/align][align=left][color=rgb(26, 26, 26)][font=-apple-system, BlinkMacSystemFont,]            Tween tween = transform.DORotateQuaternion(tmpQuaternion, 0.3f);    //使用DoTween插件进行转向的平滑运动
            tween.OnComplete(() => isTurnleftEnd = true);                       //动画结束后转向状态更新
        }

通过这段代码,我们实现了在游戏中按下J键人物向自己的方向左转,右转也是同理,这里就不再细说。
跳跃功能:
跳跃功能有以下2部分组成:
1.跳跃动作播放
2.玩家位置升高
首先我们先实现玩家的跳跃动作的播放,我们在UPdata函数中写入以下代码:
[AppleScript] 纯文本查看 复制代码
if (Input.GetKeyDown(KeyCode.Space) && playController.isGrounded)
  {
    isJumpState = true;                     //更新跳跃状态
    playAnimtor.SetBool("IsJump", true);    //播放跳跃动画
  }

按下空格,就会看到玩家已经能够播放跳跃这个动作了,但是这还不够,我们还需要将玩家的位置身高才算完成,那么我们这个时候还需要在代码中写入以下代码,才能够实现这个功能。如下:
[AppleScript] 纯文本查看 复制代码
if (isJumpState)                        //如果现在正在进行跳跃
   {
       MoveIncrements.y += jumpPower*Time.deltaTime;//根据设置好的跳跃高度进行平滑运动
   }
   else
   {
       MoveIncrements.y += playController.isGrounded ? 0f : -5.0f * Time.deltaTime * 1f;  //更新重力
   }

   playController.Move(MoveIncrements);

可能有同学看不懂这一段,我来解释一下。我们这个游戏里面使用的是charactercontroller.move();函数。这个函数移动是通过调用函数时的参数来进行移动的,它是一个增量的移动函数。如果你在玩家的坐标为(1,1,1)时调用这个函数,并给了一个(1,1,1)参数。那么下一帧,玩家的坐标就会改变为(2,2,2)。我们在代码中更改了MoveIncrements的Y值,那么下一帧玩家的坐标就会在前进的基础上,向上运动设置好的Y值,就实现了玩家高度的改变。
下滑功能:
原理与跳跃动画播放相同,只不过不需要进行高度差调整。只需要简单的在代码中写入如下代码就行了。如下:
[AppleScript] 纯文本查看 复制代码
if (Input.GetKeyDown(KeyCode.K))
        {
            playAnimtor.SetBool("IsSlide", true);
        }

完成后:


动画事件:
  经过了以上的步骤,细心的同学会发现我们只对动画的开关进行了打开操作,并没有进行关闭操作。而且我们还去掉了Has Exit Time的勾选,这样就会导致我们在播放一个动画完成后,不能够退出这个动画,出现人物停止的情况。有多种方法可以解决这个问题,例如写一个延时函数,延迟的时间为动画的播放时间,当打开动画播放开关的时候,调用这个函数,这样在动画播放完成后就能够顺利的关闭动画了。但是我们这使用的是不同的方法,我们采用的是给动画添加一个事件,在动画播放到一定进度,就执行这个事件。为了实现这个功能,我们需要先获得运行时动画控制器RuntimeAnimatorController,与当前角色的能够播放的动画数组。如下:
[AppleScript] 纯文本查看 复制代码
RuntimeAnimatorController nowController;   //现在的运行时动画控制器
 AnimationClip[] cilps;                     //播放的动画数组
  void Start ()
  {
     nowController = playAnimtor.runtimeAnimatorController;
     cilps = nowController.animationClips;
  }

添加成功后,事件的具体实现:
[AppleScript] 纯文本查看 复制代码
for (int i=0;i<cilps.Length; i++)
    {
        if (cilps[i].events.Length<=0)
        {
            switch (cilps[i].name)   //通过动画的名字进行设置
            {
                case "JUMP00":       //是跳跃
                    AnimationEvent endEvent = new AnimationEvent();            //实例化一个动画事件
                    endEvent.functionName = "JumpEnd";                         //事件的方法是“JumpEnd”
                    endEvent.time = cilps[i].length - (20.0f / 56.0f) * 1.83f; //事件的执行时间(这个可按需求进行调节)
                    cilps[i].AddEvent(endEvent);                               //这个跳跃动画添加这个事件
                    break;
            }
        }
    }
    public void JumpEnd()
    {
        playAnimtor.SetBool("IsJump", false);  //动画状态回滚
    }

  这样完成后,我们就可以在动画播放到设置好的进度时,关闭动画的播放开关,使得游戏人物动作切换更加流畅了。
结语:
  经过这3期文章,我们已经实现了一个跑酷小游戏的DEMO,是不是觉得很有趣?要是你看到这还没有完成的话,那就加把劲干吧。本期的工程地址还是上2期的地址,已经进行了更新,有兴趣的同学可以下载试玩一把哦。
知乎@繁华如梦

评分

参与人数 1鲜花 +1 收起 理由
VVVVVVito + 1 很给力!

查看全部评分


跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
5熟悉之中
748/1000
排名
3118
昨日变化

0

主题

96

帖子

748

积分

Rank: 5Rank: 5

UID
23427
好友
6
蛮牛币
1232
威望
0
注册时间
2014-4-30
在线时间
226 小时
最后登录
2018-5-21
QQ
沙发
发表于 2018-5-9 13:53:57 | 只看该作者
前排,谢谢楼主分享

4四处流浪
337/500
排名
29206
昨日变化
4

1

主题

77

帖子

337

积分

Rank: 4

UID
33973
好友
1
蛮牛币
0
威望
0
注册时间
2014-7-13
在线时间
249 小时
最后登录
2018-7-7
板凳
发表于 2018-5-9 14:26:12 | 只看该作者
谢谢?。。。。。。?!

5熟悉之中
506/1000
排名
5643
昨日变化
1

2

主题

140

帖子

506

积分

Rank: 5Rank: 5

UID
252889
好友
1
蛮牛币
1760
威望
0
注册时间
2017-11-6
在线时间
142 小时
最后登录
2018-7-13
QQ
地板
发表于 2018-5-9 16:07:15 | 只看该作者
感谢楼主分享

5熟悉之中
652/1000
排名
3886
昨日变化

1

主题

115

帖子

652

积分

Rank: 5Rank: 5

UID
236305
好友
1
蛮牛币
919
威望
0
注册时间
2017-8-7
在线时间
196 小时
最后登录
2018-7-23
5#
发表于 2018-5-9 16:31:12 | 只看该作者
前排支持~~

7日久生情
3075/5000
排名
2374
昨日变化
7

0

主题

2085

帖子

3075

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2460
威望
0
注册时间
2017-7-12
在线时间
444 小时
最后登录
2018-7-23

活力之星

6#
发表于 2018-5-9 16:50:44 | 只看该作者
谢谢分享

7日久生情
1857/5000
排名
4445
昨日变化
24

0

主题

1311

帖子

1857

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
267381
好友
5
蛮牛币
3081
威望
0
注册时间
2018-2-1
在线时间
248 小时
最后登录
2018-7-23
7#
发表于 2018-5-10 08:42:44 | 只看该作者
谢谢分享
[发帖际遇]: 墨染青天 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

7日久生情
2418/5000
排名
2892
昨日变化
1

0

主题

1707

帖子

2418

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185339
好友
0
蛮牛币
3500
威望
0
注册时间
2016-11-20
在线时间
253 小时
最后登录
2018-7-23
8#
发表于 2018-5-10 09:32:32 | 只看该作者

3偶尔光临
269/300
排名
7708
昨日变化
72

0

主题

47

帖子

269

积分

Rank: 3Rank: 3Rank: 3

UID
272330
好友
0
蛮牛币
417
威望
0
注册时间
2018-3-14
在线时间
88 小时
最后登录
2018-7-22
9#
发表于 2018-5-10 21:49:45 | 只看该作者
看过必回!

排名
32434
昨日变化
7

0

主题

4

帖子

16

积分

Rank: 1

UID
254509
好友
0
蛮牛币
25
威望
0
注册时间
2017-11-15
在线时间
4 小时
最后登录
2018-5-11
10#
发表于 2018-5-11 09:52:54 | 只看该作者
很赞

3偶尔光临
263/300
排名
6635
昨日变化

0

主题

15

帖子

263

积分

Rank: 3Rank: 3Rank: 3

UID
251535
好友
0
蛮牛币
750
威望
0
注册时间
2017-10-30
在线时间
68 小时
最后登录
2018-7-23
11#
发表于 2018-5-11 14:52:08 | 只看该作者
666666666666

2初来乍到
137/150
排名
44716
昨日变化
6

0

主题

109

帖子

137

积分

Rank: 2Rank: 2

UID
247666
好友
0
蛮牛币
23
威望
0
注册时间
2017-10-9
在线时间
24 小时
最后登录
2018-7-14
12#
发表于 2018-5-12 18:55:29 | 只看该作者
看过必回

3偶尔光临
264/300
排名
7939
昨日变化
2

2

主题

25

帖子

264

积分

Rank: 3Rank: 3Rank: 3

UID
253227
好友
0
蛮牛币
509
威望
0
注册时间
2017-11-8
在线时间
97 小时
最后登录
2018-7-23
13#
发表于 2018-5-15 10:39:33 | 只看该作者
谢谢分享

3偶尔光临
245/300
排名
8978
昨日变化
2

0

主题

62

帖子

245

积分

Rank: 3Rank: 3Rank: 3

UID
71644
好友
0
蛮牛币
340
威望
0
注册时间
2015-1-28
在线时间
67 小时
最后登录
2018-7-23
14#
发表于 2018-5-16 17:56:44 | 只看该作者
牛牛牛牛牛

排名
19145
昨日变化
1

0

主题

4

帖子

44

积分

Rank: 1

UID
260936
好友
0
蛮牛币
49
威望
0
注册时间
2017-12-25
在线时间
15 小时
最后登录
2018-5-30
15#
发表于 2018-5-18 15:48:15 | 只看该作者
谢谢楼主的分享?。。。?!

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 新宝娱乐城博彩打不开 返回列表
  • 香港田径锦标赛飞人夺冠 2018-12-12
  • 李思思元元月亮姐姐 盘点央视主持人与子女温馨合影 2018-12-11
  • “忻州工匠”“忻州技能标兵”评选活动启动 2018-12-11
  • 包住内力,在不断变化中寻找契机,可出击可借力亦可卸力。 2018-12-10
  • 广州中考首用计算机辅助命题 满满的广州元素 2018-12-09
  • 植树、采茶、挖野菜…… 这才是春天正确的打开方式 2018-12-08
  • 【纯黑】《生化危机7》克里斯DLC不是英雄 2018-12-08
  • 150块地铁灯牌高调“炫父” 温暖南京城 2018-12-07
  • 【光明网专论】鞠立新:习近平新时代中国特色社会主义经济思想的内涵、逻辑和特质 2018-12-06
  • 江西“放管服”改革再出实招 2018-12-05
  • 首列商用磁浮2.0版列车下线 适用中心城市到卫星城间交通--旅游频道 2018-12-05
  • 空警-500改进型新照曝光,监控效率成倍提升 2018-12-04
  • 对美敲诈老手不能软越软越诈你要打就来 2018-12-04
  • 赵旭日:对阵恒大很有缘 比赛要一场一场去踢 2018-12-03
  • 《数码宝贝故事》第三阶段首发初回特典公布--人民网游戏 2018-12-03
  • 473| 754| 604| 694| 263| 150| 952| 518| 101| 526|