【游戏技术群】959392658  【游戏出海群】12067810
福建体彩31选7开奖 手机端
开发者专栏

关注:2377

当前位置:福建体彩31选7开奖 技术专区 开发者专栏

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

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

福建体育彩票31选7: [士郎] 炫酷跑酷教程(1)——简单的动态地图生成与人物动作

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

福建体彩31选7开奖 www.jlh8.com.cn 7097

主题

7624

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
11166
威望
30
注册时间
2013-7-29
在线时间
3648 小时
最后登录
2018-12-19

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

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

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

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

x
前言
  大渣好。正如标题所示,咱们这篇文章做一个跑酷游戏。这个类型确实已经过了它最辉煌的时代。
  但我要说的是,跑酷游戏是最适合初学者做完整个项目的游戏类型之一。你在这类项目中,需要涉及地图自动生成、角色操控与动画等一系列通用性极强的技术要点——而这一切,都是建立在“跑酷”这样一个不那么复杂的游戏架构上的。对初学者来说,没有比获取及时的正反馈和成就感更重要的了。
  多说无益,直接开搞。
准备工具
DoTween插件。
插件下载



工程创建
打开Unity,新建一个工程,工程中新建一个文件夹并命名为Plugins,将DoTween插件解压后的文件放入这个文件夹当中。不明白文件夹有什么用的参考这篇文章:
需求分析
完成以上步骤才算准备完成。那么现在分析我们这款跑酷游戏的需求,或者说实现功能。
先听听我的小伙伴的看法。
伙伴A:肯定要有无限的道路了,不然怎么玩?(看我不跑死你们)
伙伴B:原版在地上跑太low了,我们自己做当然要厉害点了。那就要用魔法让道路自己到脚下来。
总结一下:
1.要有无限的道路
2.要让道路动起来,能够自己到脚下铺路。
恩!那就像这样?

地图模板
在探讨游戏规则之前,我们先制作整个游戏道路的模板。
首先我们在场景视图中创建一个Cube,并将他的TransForm.position改成0,0,0.同时更改这个Cube的名字为CubeCenter,去掉这个Cube上面的BoxCollider。创建第二个Cube,并将他的TransForm.position改成1,0,0.同时更改这个Cube的名字为CubeRightr,去掉这个Cube上面的BoxCollider。创建第三个Cube,并将他的TransForm.position改成-1,0,0.同时更改这个Cube的名字为CubeLeft,去掉这个Cube上面的BoxCollider。在CubeCenter下面创建一个空物体,并命名为RoadTemplate。


将这个空物体设为3个cube的父节点,同时添加一个BoxCollider,并将这个逐渐的Size改成3,1,1.用来刚好覆盖3个Cube。

然后将在这个道路模板保存为预制体。
地图规则
在游戏中你每一次生成下一个道路的时候你都会有3个方向选择

1.直线方向——foward
2.相对于自己的左方向——left
3.相对于自己的右方向——right
那么要生成能够使用的,无限的地图,那么我们必须制定游戏道路的生成规则才能达到这个目标。
规则1:在你生成一次转向道路后,10回合之内不能再进行转向。(如果还能继续转向会出现无法使用的道路)
规则2:只有在你完全经过一个道路进入下一个道路后,才能进行下一个道路的生成。(防止无限生成,占用不必要的资源。同时也防止道路生成过长,出现道路重叠,影响游戏体验)
依照上面的规则,我们创建一个GameMode.cs文件,贴上我的代码:
[AppleScript] 纯文本查看 复制代码
public void BuidRoad()
{
    int turnSeed = Random.Range(1,10);                      //用于确定是否转向
    if (turnSeed == 1 && buidfound<=0)
    {
        buidfound = 10;                                     //回合数更新
        int dictSeed = Random.Range(1,3);
        for (int i = 0; i < 3; i++)                         //先生成3个格子的道路,作为转向区
        {
            var tmpRoad = Instantiate(roadTemplate, guideTrs.position, guideTrs.rotation);
            PlayRoadAnimator(tmpRoad);
            roads.Add(tmpRoad);
            guideTrs.position += guideTrs.forward;
        }
        if (dictSeed == 1)                                  
        {
            guideTrs.position -= guideTrs.forward * 2;      //转向区域生成完成后,引导物体回退2格
            guideTrs.Rotate(Vector3.up, 90);                //转向
            guideTrs.position += guideTrs.forward * 2;      //转向后引导物体的forward轴改变,改变pos值,到达下一个道路的生成地点
        }
        else
        {
            guideTrs.position -= guideTrs.forward * 2;
            guideTrs.Rotate(Vector3.up, -90);
            guideTrs.position += guideTrs.forward * 2;
        }
    }
    else
    {
        var tmpRoad = Instantiate(roadTemplate, guideTrs.position, guideTrs.rotation);
        PlayRoadAnimator(tmpRoad);
        roads.Add(tmpRoad);
        guideTrs.position += guideTrs.forward;              //每生成一个道路,引导物体的位置改变
    }
    buidfound--;
}

PS:代码中的道路模板需要在编辑器中手动拖入。
人物动画与移动
游戏的人物模型我们使用官方免费提供的模型,在unity中Window菜单中点击Asste Store ,打开资源商店进行下载就行了。

新建一个动画控制文件,PlayerAnimatorController.controller。并应用在人物上,然后在animator视图中配置动画控制器。如图:

新建一个BlendTree,点击进入编辑

在人物模型上添加Character Controller组件。然后新建一个PlayerController.cs文件。然后再代码中获取模型身上的组件,进行动画与移动的设置。如下:
[AppleScript] 纯文本查看 复制代码
void Update ()[/align]
[align=left]{[/align]
[align=left]    moveSpeed += Time.deltaTime*0.3f;[/align]
[align=left]    float moveDir = Input.GetAxis("Horizontal");[/align]
[align=left]    MoveIncrements = transform.forward * moveSpeed * Time.deltaTime;[/align]
[align=left]    MoveIncrements += transform.right * transverseSpeed * Time.deltaTime*moveDir;[/align]
[align=left]    MoveIncrements.y += playController.isGrounded ? 0f : Physics.gravity.y * Time.deltaTime * 1f;       //更新重力[/align]
[align=left]    playController.Move(MoveIncrements);[/align]
[align=left]    playAnimtor.SetFloat("MoveSpeed",playController.velocity.magnitude);                                //动画状态更新[/align]
[align=left]}

地图效果
在预览图中地图中的方块在空中进行旋转,为了达成这样的效果,我们先创建2个文件,分别是RoadControl.cs,RoadChildrenChange.cs。RoadControl挂载在父物体上,用于控制下面的子物体。如下:
[AppleScript] 纯文本查看 复制代码
public void ChangeChildrens()    //改变全部子物体的位置信息
{
    for (int i=0;i< childrens.Length;i++)
    {
        childrens.PosChange();
        childrens.ChangeRotate();
        childrens.isTurn = true;
    }
}
public void InitChildrens()    //初始化全部子物体的信息
{
    for (int i = 0; i < childrens.Length; i++)
    {
        childrens.Init();
        childrens.isTurn = false;
    }
}

RoadChildrenChange挂载在子节点上用于记录自己信息,并恢复。如下:
[AppleScript] 纯文本查看 复制代码
public void PosChange()       //改变这个物体的相对位置
{
    int changeValueUp = 0;
    int chageValueRight = 0;
    while (Mathf.Abs(changeValueUp)<=4.0f)
    {
        changeValueUp = Random.Range(-10,10);
    }
    while (Mathf.Abs(chageValueRight) <= 4.0f)
    {
        chageValueRight = Random.Range(-10, 10);
    }
    transform.localPosition += transform.up * changeValueUp;
    transform.localPosition += transform.right * chageValueRight;
}
public void ChangeRotate()   //改变这个物体的相对旋转
{
    transform.Rotate(transform.right, Random.Range(0, 180));
    transform.Rotate(transform.forward, Random.Range(0, 180));
    transform.Rotate(transform.up, Random.Range(0, 180));
}
public void Init()           //使用DOTween插件初始化
{
    transform.DOLocalMove(firstLocalPos, time);
    transform.DOLocalRotateQuaternion(firstLocalRotation, time);
}

然后再将我们的道路模板挂载上我们的控制脚本,如图:


实现原理:通过代码记录组成道路模板小方块的Local坐标,在生成这个道路时候,改变自己的相对坐标,并按照设置好的轴进行旋转操作,在需要道路重现的时候,同时使用插件进行插值计算,在一定时间恢复道路,达到这个效果。
游戏运行
完成上面的步骤,我们将这写脚本挂载到游戏的对象当中,进行游戏运行。


后记
如有下期,我会增加道路生成的复杂性,添加游戏道具的生成等。(希望不会摸鱼给搞忘了)
附上这篇文章制作的简单工程:

知乎:繁华如梦


跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
6蛮牛粉丝
1107/1500
排名
2082
昨日变化

13

主题

113

帖子

1107

积分

Rank: 6Rank: 6Rank: 6

UID
61419
好友
0
蛮牛币
1137
威望
0
注册时间
2014-12-15
在线时间
345 小时
最后登录
2018-12-13
沙发
发表于 2018-5-4 12:01:19 | 只看该作者
好厉害那个跑到还实时变化

6蛮牛粉丝
1148/1500
排名
4068
昨日变化
20

2

主题

344

帖子

1148

积分

Rank: 6Rank: 6Rank: 6

UID
238701
好友
1
蛮牛币
936
威望
0
注册时间
2017-8-21
在线时间
450 小时
最后登录
2018-12-19
板凳
发表于 2018-5-4 15:07:00 | 只看该作者
爱你么么么么

7日久生情
3444/5000
排名
1695
昨日变化
3

0

主题

2127

帖子

3444

积分

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

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

活力之星

地板
发表于 2018-5-4 17:19:10 | 只看该作者
谢谢分享

6蛮牛粉丝
1206/1500
排名
1966
昨日变化
7

0

主题

42

帖子

1206

积分

Rank: 6Rank: 6Rank: 6

UID
176467
好友
0
蛮牛币
1310
威望
0
注册时间
2016-10-18
在线时间
494 小时
最后登录
2018-12-19
5#
发表于 2018-5-4 17:29:17 | 只看该作者
{:90:}{:90:}

6蛮牛粉丝
1173/1500
排名
1782
昨日变化
6

8

主题

178

帖子

1173

积分

Rank: 6Rank: 6Rank: 6

UID
131585
好友
0
蛮牛币
2512
威望
0
注册时间
2015-12-13
在线时间
267 小时
最后登录
2018-12-18
6#
发表于 2018-5-4 17:42:56 | 只看该作者
虽然看不懂,但还是要等下期

7日久生情
1694/5000
排名
17866
昨日变化
11

4

主题

762

帖子

1694

积分

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

UID
63377
好友
0
蛮牛币
80
威望
0
注册时间
2014-12-24
在线时间
892 小时
最后登录
2018-12-12
7#
发表于 2018-5-5 09:44:48 | 只看该作者
很不错很傻的复合阿瑟扔

7日久生情
3924/5000
排名
270
昨日变化

1

主题

130

帖子

3924

积分

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

UID
3603
好友
0
蛮牛币
8660
威望
0
注册时间
2013-9-10
在线时间
1883 小时
最后登录
2018-12-19
8#
发表于 2018-5-5 11:12:57 | 只看该作者
好酷的感觉吖。

7日久生情
1884/5000
排名
1477
昨日变化
2

0

主题

589

帖子

1884

积分

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

UID
164723
好友
0
蛮牛币
3518
威望
0
注册时间
2016-8-29
在线时间
469 小时
最后登录
2018-7-31
9#
发表于 2018-5-5 11:31:29 | 只看该作者
{:107:}

3偶尔光临
203/300
排名
11703
昨日变化
6

0

主题

77

帖子

203

积分

Rank: 3Rank: 3Rank: 3

UID
278671
好友
0
蛮牛币
16
威望
0
注册时间
2018-4-24
在线时间
46 小时
最后登录
2018-11-26
10#
发表于 2018-5-5 12:16:54 | 只看该作者
发个梵蒂冈梵蒂冈梵蒂冈

7日久生情
1917/5000
排名
4356
昨日变化
4

0

主题

1335

帖子

1917

积分

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

UID
267381
好友
6
蛮牛币
3212
威望
0
注册时间
2018-2-1
在线时间
258 小时
最后登录
2018-11-6
11#
发表于 2018-5-5 13:13:52 | 只看该作者
谢谢分享

5熟悉之中
970/1000
排名
3538
昨日变化
3

3

主题

185

帖子

970

积分

Rank: 5Rank: 5

UID
62741
好友
1
蛮牛币
1352
威望
0
注册时间
2014-12-21
在线时间
378 小时
最后登录
2018-12-10
12#
发表于 2018-5-5 15:35:58 | 只看该作者
不错的创意

7日久生情
2710/5000
排名
650
昨日变化
1

30

主题

576

帖子

2710

积分

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

UID
124569
好友
25
蛮牛币
7240
威望
0
注册时间
2015-10-4
在线时间
800 小时
最后登录
2018-12-14
13#
发表于 2018-5-5 16:38:51 | 只看该作者
哇塞,感觉好厉害的样子啊

6蛮牛粉丝
1054/1500
排名
3446
昨日变化
2

4

主题

175

帖子

1054

积分

Rank: 6Rank: 6Rank: 6

UID
229882
好友
0
蛮牛币
753
威望
0
注册时间
2017-7-2
在线时间
467 小时
最后登录
2018-12-17
14#
发表于 2018-5-6 09:54:20 | 只看该作者
大渣好,是不是少了点什么啊~~~

排名
34128
昨日变化
34

0

主题

9

帖子

20

积分

Rank: 1

UID
280105
好友
0
蛮牛币
15
威望
0
注册时间
2018-5-6
在线时间
3 小时
最后登录
2018-5-18
15#
发表于 2018-5-6 17:26:48 | 只看该作者
厉害

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

本版积分规则

快速回复 福建体彩31选7开奖 返回列表
142| 338| 679| 465| 27| 933| 948| 893| 215| 347|