2016.1.19Unity3D总结

点击Q键可以移动画面。

点击W可以键选择的模块进行拖动

点击可以将你选中的模块进行旋转。

点击R可一件选中的模块进行放大或缩小。

Alt+左键可以围绕选中物体旋转。

滑轮可以进行拉近或拉远。

同时按Ctrl+Alt+鼠标右键的效果和滑轮一样。

for循环创建一个(9*9)的模块组

一般方法

先创建一个空的模块,在创建一个C#Script 后将下列代码写入后保存。然后将其拖入到新建的模块中运行即可。

using UnityEngine;

using System.Collections;

 

public class CreateCubeScript : MonoBehaviour {

 

 

    void Start()

    {

        for(int x=0;x<9;x++)

        {

            for(int y=0;y<9;y++)

            {

                GameObject g=GameObject.CreatePrimitive (PrimitiveType.Cube);

                g.transform.localScale=new Vector3(0.8f,0.8f,0.8f);

                g.transform.position=new Vector3(x,y,0);

            }

        }

    }

}

 

预制件方法

 

首先要创建预制件。

先将你所要创建的预制件模块拖入到Hierarchy中再将Hierarchy中的模块拖回来再将Hierarchy中的模块删除。预制件制作完毕。

 

然后在创建一个空模块,在创建一个C#Script 后将下列代码写入后保存。

using UnityEngine;

using System.Collections;

 

public class CreateTeddy : MonoBehaviour {

 

    public Transform g;

    void Start()

    {

        for (int x = 0; x < 9; x++)

        {

            for (int y = 0; y < 9; y++)

            {

                g = (Transform)GameObject.Instantiate(g);

                g.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);

                g.position = new Vector3(x, y, 0);

            }

        }

}

}

动画效果

首先要创建一个动画播放器

Animator Controller

打开Animatr Controller 后将想要播放的动画效果添加到里面。


跳跃游戏的部分功能实现

创建四个文件夹非别为 Music Scenes Skyling Runner

先创建两个预制件SkylingCloseprefab  SkylingFarawayprefab 分别一个颜色深一个颜色浅,将其放入Skyling中。

继续在Hierarchy中创建两个空的模块 SkylingCloseManager(近天际线) SkylingFarawayManager(远天际线)

在Skyling中创建C#Script 代码为

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class SkylineCloseScript : MonoBehaviour
{
    public Transform prefab;

//放置预制件的容器。
    public Vector3 startPosition;

//定义墙体的开始位置
    Vector3 nextPosition;

//定义下一个墙体出现的位置
    public int GameObjectsNumber;

//定义游戏中的墙体数
    Queue<Transform> queueObjects;

//定义一个队列
    public Vector3 minSize;

//定义墙体的最小Scale
    public Vector3 maxSize;

//定义墙体的最大Scale
    public float offSet;

//定义Cube在移动时X的大小和队列收个元素的x大小的差值。
    void Start()
    {
        queueObjects = new Queue<Transform>(GameObjectsNumber);

         //初始化队列
        for (int i = 0; i < GameObjectsNumber; i++)
        {
            queueObjects.Enqueue((Transform)GameObject.Instantiate(prefab));

             //将墙体添加到队列中去
        }
        nextPosition = startPosition;

        //将初始位置给第一个墙体
        for (int i = 0; i < GameObjectsNumber; i++)
        {
            Recycle();
        }
    }
    void Update()
    {
        if (RunnerScript.distance - queueObjects.Peek().position.x >= offSet)

        //如果Cube在移动时X的大小和队列收个元素的x大小的差值大于offSet
        {
            Recycle();

        //将队首放到队尾


        }
    }

  //生成一个新的墙体
    private void Recycle()
    {


        Vector3 scale = new Vector3(Random.Range(minSize.x, maxSize.x), Random.Range(minSize.y, maxSize.y), Random.Range(minSize.z, maxSize.z));

//随机该墙体的Scale的值
        Transform o = queueObjects.Dequeue();

//移除旧的墙体并且返回一个未初始化的新墙体
        Vector3 position = nextPosition;

//当前楼体的位置
        position.x += scale.x * 0.5f;

//上次的位置再向右移动自己身长的一半
        position.y += scale.y * 0.5f;

//由于墙体的坐标是按墙体的重心计算。所以将所有墙体都像上提高自身高度的一半,则他们就处在同一水平线上
        o.localScale = scale;

        o.position = position;

//将墙体的Scale和Postion赋值给墙体本身
        nextPosition.x += scale.x;

//计算下一次墙体的水平位置即前几个墙体的长度和
        queueObjects.Enqueue(o);

将新生成的墙体添加到队列中去
    }
}

将上面的C#分别拖入到两个控模块 SkylingCloseManager SkylingFarawayManager中,并填写相应数据。

在创建一个Runner模块将摄像机啊放在其中。

再在Runner文件夹中创建C#Script其代码为

using UnityEngine;
using System.Collections;


public class RunnerScript : MonoBehaviour
{
    public static float distance;

//定义一个可以在别的脚本调用的变量


    void Update()
    {
        transform.Translate(5f * Time.deltaTime, 0, 0);

//一秒钟在x周方向上移动五个单位
        distance = transform.position.x;

//将Cube的X轴的值赋给distance


    }


}

保存后将其导入Runner模块中即可完成。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值