游戏开发吧 关注:96,686贴子:621,542

游戏开发实例解析,一步一步教你如何设计游戏

取消只看楼主收藏回复


之前介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得Unity3D 这套游戏引擎真的很棒,它可以为开发者节省时间。


IP属地:上海1楼2018-04-21 15:27回复
    如果你还不是很了解Unity3D 游戏引擎的话可以关注我,看看我之前发的帖子,连接容易被删所以就不再这里发了。
    Unity3D 游戏引擎之控制模型移动旋转与碰撞
    上一章介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得Unity3D 这套游戏引擎真的很棒,它可以为开发者节省时间。用更多少的脚本,可以实现更多的功能。先赞一下,哇咔咔~废话不多说了,入正题!


    IP属地:上海2楼2018-04-21 15:28
    回复
      首先在3D世界中创建一个箱子模型,然后添加一个脚本,命名为 js0绑定到这个箱子中。在添加一个脚本,命名为js1 ,同样绑定到这个箱子上,用来实现对象的创建与调用方法参数的传递 ~


      IP属地:上海3楼2018-04-21 15:29
      回复
        var Control; 这里声明一个控制类的对象,用来进行参数的传递,调用方法。Getomponent(js1): 得到脚本名称为js1的对象,这里把值赋给Control,就可以使用js1脚本中的方法了,下面的代码中通过这个对象调用模型的移动方法。Input.GetKey(KeyCode): 这个方法返回一个Bool 判断当前按键是否被按下,当然这里只能运行在PC上才可以感应按钮,因为IOS的设备上没有按键,以后我会介绍在IOS上添加游戏摇杆的功能,本章我们先学习一下PC上的基本按钮响应。


        IP属地:上海4楼2018-04-21 15:29
        回复
          下面代码实现按下“W”控制物体向前实现按下“S”控制物体向后实现按下“A”控制物体向左平移实现按下“D”控制物体向右平移实现按下“Q”控制物体向左旋转实现按下“E”控制物体向右旋转js0.js 代码


          IP属地:上海5楼2018-04-21 15:29
          回复
            我去过很多的平台,发现很多都是新手,而且有很多的问题,虽然有很多的人在解答,但是还是有非常多的人,没能得到想要的答案。
            其实有时候我们并不是只为了答案为来,多数人是想要一个学习的机会,一个氛围,所以在这里给大家介绍一个我自己组建学习qun,里面有很多的大佬,也有很多和你们一样想要学习游戏开发的人,更有已经在这个行业工作好几年的大神,欢迎想要学习的各位加入。


            IP属地:上海6楼2018-04-21 15:44
            回复


              IP属地:上海7楼2018-04-21 15:50
              回复
                [代码]js代码:
                01 //旋转移动速度
                02 var Speed = 50;
                03
                04 //控制对象
                05 var Control;
                06
                07 function Update()
                08 {
                09 //得到控制对象
                10 Control = GetComponent(js1);
                11
                12 //判断按键
                13
                14 if(Input.GetKey(KeyCode.W))
                15 {
                16 //前进
                17 Control.ForWard();
                18
                19 }else if(Input.GetKey(KeyCode.S))
                20 {
                21 //后退
                22 Control.Back();
                23 }
                24
                25 if(Input.GetKey(KeyCode.A))
                26 {
                27 //前左
                28 Control.GLeft();
                29
                30 }else if(Input.GetKey(KeyCode.D))
                31 {
                32 //后右
                33 Control.GRight();
                34 }
                35
                36
                37
                38 if(Input.GetKey(KeyCode.Q))
                39 {
                40 //左旋转
                41
                42 Control.leftRotate(Vector3.up *Time.deltaTime * -Speed);
                43
                44 }else if(Input.GetKey(KeyCode.E))
                45 {
                46 //右旋转
                47 Control.RightRotate(Vector3.up *Time.deltaTime * Speed);
                48
                49 }
                50
                51 }
                js1.js 代码 参数的传递可以使用obj进行传递,代码中我将旋转的角度做为参数传递到了js1.js中控制模型旋转。Vector3 标示一个3D的向量单位,它可以标示模型的三个方向,这里根据旋转的角度与移动的向量设置它。


                IP属地:上海8楼2018-04-21 23:17
                回复
                  [代码]js代码:
                  01 //前进速度
                  02 var Speed = 50;
                  03
                  04 //前进
                  05 function ForWard()
                  06 {
                  07 transform.Translate(Vector3.forward * Time.deltaTime *Speed);
                  08 }
                  09
                  10 //后退
                  11 function Back()
                  12 {
                  13 transform.Translate(Vector3.forward * Time.deltaTime * -Speed);
                  14 }
                  15
                  16
                  17 //向左
                  18 function GLeft()
                  19 {
                  20 transform.Translate(Vector3.right * Time.deltaTime *-Speed);
                  21 }
                  22
                  23 //向右
                  24 function GRight()
                  25 {
                  26 transform.Translate(Vector3.right * Time.deltaTime * Speed);
                  27 }
                  28
                  29
                  30
                  31
                  32 //传递参数
                  33
                  34 //左旋转
                  35 function leftRotate(obj)
                  36 {
                  37 transform.Rotate(obj);
                  38 }
                  39
                  40 //右旋转
                  41 function RightRotate(obj)
                  42 {
                  43 transform.Rotate(obj);
                  44 }
                  OK点击运行,通过按键我们可以正常的控制模型平移与旋转,但是现在有两个问题 1, 主摄像机不能跟随控制模型, 2 、模型可以横穿过山丘,感觉很假。下面我们解决这两个问题。


                  IP属地:上海9楼2018-04-22 13:51
                  回复
                    先顶稍后更新


                    IP属地:上海来自Android客户端10楼2018-04-23 14:42
                    回复
                      在Unity3D标准资源的脚本中系统帮我们写好了跟随脚本.如下图所示,点击Import Package - > Scripts 将系统脚本导入。


                      IP属地:上海12楼2018-04-23 21:41
                      回复
                        感觉没什么人啊?是我写的不好吗?有意见的话欢迎提出哦


                        IP属地:上海来自Android客户端13楼2018-04-24 09:33
                        回复
                          选中摄像机 点击Component - > Camera-Control - > Smoot Follow ,给主摄像机添加一个跟随脚本。


                          IP属地:上海14楼2018-04-24 12:59
                          回复
                            稍后更新


                            IP属地:上海来自Android客户端17楼2018-04-25 07:36
                            回复
                              跟随脚本添加完以后,须要指定一个跟随的物体,下面红框内将跟随的物体Cube拖动进来,这里Cube就是我们上面控制的模型,那么这样,摄像机将会一直在身后跟随我们控制的模型。下面是一些跟随的参数,设置 跟随的距离 高度等等,盆友们手动的修改一下运行游戏就可以看出来变化,。


                              IP属地:上海19楼2018-04-25 13:16
                              回复