大师练成记之实例篇(parkour 一)

今天,小编为大家带了一个简单的跑酷游戏,今天讲解背景的设置,因为初学,所以做的东西都是用Cube  (立方体)做成,比较粗糙。以后慢慢改进,适用于初学者哦。
      首先创建一个New Project ,注意路径中不能有汉字哦。
      一、点击GameObject,Create Empty(Ctrl+Shift+N),然后选中创建的空物体,创建它的俩个子物体(Alt+Shift+N),要注意好的命名习惯,父物体命名为Manager 俩个子物体命名为SkylineCloseManager 和 SkylineFarawayManager
       二、创建预制件  Create 一个Cube  在Assets文件夹下创建一个材质球 右键 Create >Material
             可以给他赋予颜色,然后拖动它给你创建好的Cube,再将Cube拖动到Assets就设置好了预制件,需要俩个预制件哦
       三、写脚本
             这里只需要一个脚本SkylineScript和Runner就可以了
             using UnityEngine;
             using System.Collections;
             using System.Collections.Generic;// Queue<>  用这个需要这个命名空间
             public class CreateSkylineSprit : MonoBehaviour {
             public int createObjectNumber; //公开的东西在前台会出现,需要创建的背景墙个数
             public Transform prefab;//需要接受前台的预制件的对象
             Queue<Transform>  queue;//队列
             public Vector3 startPosition; //开始坐标   Vector3 是3维坐标
             Vector3 nextPosition;//下一个坐标
             public  Vector3 maxSize;//最大尺寸
             public  Vector3 minSize;//最小尺寸都是三维的啊
              public float offset;//和runner有关,用到的时候解释
    void Start()
    {
        queue = new Queue<Transform>(createObjectNumber);实例化队列  ()里是队列长度
        for(int i=0;i<createObjectNumber;i++)// 循环生成Transform 类型的T 加入QUEUE队列中
        {
            Transform t =(Transform) Transform.Instantiate(prefab);
            queue.Enqueue(t);
        }
        nextPosition = startPosition;将开始坐标赋予下一刻的坐标
        for (int i = 0; i < createObjectNumber;i++ )//循环调用设置背景墙的位置大小的方法
        {
            Recycle();
        }
}

   private void Recycle()   {
           Transform t = queue.Dequeue();       //将队列中的T取出来,每次取第一个。   
           Vector3 scale = new Vector3(Random.Range(minSize.x,maxSize.x),Random.Range(minSize.y,maxSize.y),10);   
           //随机生成一组三维的长宽高     
           t.localScale = scale;      //赋予取出的T;
           Vector3 position = nextPosition;//将前面得到的nextposition赋予新建的Position        
           position.x += scale.x * 0.5f;      

           position.y += scale.y * 0.5f;   
           t.position = position;//因为此方法循环调用,每一个背景墙生成的位置都得是以前一面墙为基础的,所以此处+=,每次都得赋予取出的T,此处不易直接理解,建议读者画图一步一步实现,便容易明白;不懂可以给小编留言哦
           nextPosition.x+= t.localScale.x;把T的x轴方向的宽和上面position.x+=Scale*0.5f加起来作为下一个背景墙生成的位置
           queue.Enqueue(t);把改好的T加入队列的队尾
  四、生成一个Runner(Cube)
         然后将摄像机加入它,拖动摄像机上去即可。
         写一个Runner脚本  
         using UnityEngine;
         using System.Collections;
public class Renner : MonoBehaviour {
public static float distance;
void Update()     {
                      transform.Translate(5f*Time.deltaTime,0,0);    //这是物体运动的代码,5f*time.daltatime是将5f平均到每一帧去运行,可以理解为每一帧都是匀速地运行
                     distance = transform.position.x;   
            }
}      
       五 SkylineSprit 刚才只写了,设置背景墙,现在写在Runner走的时候一直生成墙(毕竟CreateObejectNumber有限)
         void Update()
    {
         if(Renner.distance -queue.Peek().position.x>offset)//runner运行的距离也就是他走的x的值减去 队列头部的x的值,如果大于前台设置的值,就会调用一次Recycle.
        {
            Recycle();
         }

    }   
       小编有的地方写的不清楚的,希望大家留言询问,帮助小编慢慢成长,逐步提高,今天只是背景的简单设置,明天我们的Parkour会有新的内容更新哦。每天0凌晨更新,谢谢大家阅读与关注。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值