美文网首页
Unity5.2入门课程笔记-Roll A Ball

Unity5.2入门课程笔记-Roll A Ball

作者: 街头顽禽 | 来源:发表于2018-05-24 20:34 被阅读33次

001

2004 诞生于阿姆斯特丹

2005 总部设在了美国的旧金山 发布Unity 1.0 版本

          起初只能用于Mac平台,用于Web项目和VR虚拟现实的开发

2008年推出Winddows版本,支持IOS系统和Wii(任天堂家用游戏机)系统

2009年开发者注册人数达到3.5万人,荣登09年游戏引擎前5名。

2010年开始支持Android平台,继续扩大影响力。

2011年开始支持Ps3和Xbox360,从此,全平台构建完成,无可挑剔。

如此强大的游戏引擎,而且支持当今最火的三大平台: Web IOS Android

调查显示,这款引擎的快速开发游戏的有点得到游戏开发者的青睐,体现为易学,易用。

Unity开发的知名游戏: 埃巴拉太空计划 唯舞独尊(类似QQ炫舞)有杀气童话(网易出品) 神庙逃亡2(经典)                     

Uinty同时提供了Unity的免费版本(如个人版),打破游戏公司靠卖Lisence赚钱的常规,采用更为流行的2/8拆分成,并且体统Access Store 平台(一站式销售)。

002

Unity 5.2的破解

Unity的官网:www.unity3d.com/cn/ 部分汉化

003

vs2012是用来写代码的,Unity引擎中自带MonoDevelop编译工具,但是其代码提示功能不够强大

Unity中设置默认编译工具: Edit -> Prefereneces(偏好设置) ->External Tools(外部工具)-> External Scripts   Editor(外部脚本编辑器) ->选择VS

选择默认的编译工具的目录: Common7  IDE  devenv.exe ->点击确定

004

Layout(布局) Assets(资源) Scene(场景) 顶部的三个按钮,分别是运行 暂停 逐帧快进(常用于游戏优化)

005

Project 项目面板

声音资源 (Auido)

模型资源 

场景文件  (Scene)

材质      (Material)

脚本      (Scripts)

Hierarchy 层级面板

当前场景包含什么东西

层级面板中的所有东西称为GameObject (游戏物体)

Inspector 检视面板  查看属性

场景->游戏物体->组件

Scene 场景窗口

Game 游戏预览窗口

006

场景 游戏体 组件

Ctrl + D 复制

Hierarchy中的内一个东西都称之为游戏物体

007

 双击聚焦(或者使用快捷键f)

Persp 透视视图  近大远小

Iso  正交视图  平行视野

008

世界坐标系 局部坐标系

红色x轴代表左右方向 蓝色z轴代表前后方向 y轴代表上下方向

x,y,z轴指向的都是正方向

游戏物体的子物体的位置是以父系物体为坐标原点的,此时他是局部坐标,离开父系物体(就是在根目录)就是世界坐标

009

外观操作

Transform组件

position 位置

rotatin  旋转 围绕旋转的轴是当前修改的轴 修改的数值为度数:30,,60,,90,120……

scale    缩放

快捷键: Q 平移 W 位移 E 旋转 R 缩放 T 常用于2D游戏

010

小结

011

关于物体应用材质的俩种方法

1.直接将材质球拖到Scene面板中物体上

2.将材质球拖到Hierarchy面板下的物体上

012

Rigidbody组件的功能:刚体组件,模拟物理效果,让物体具有物理属性,重力和速度等。

Remove Component 移除组件

Creat Scripts: 创建Scripts有俩种方式,一种是在Hierarchy面板中点击游戏体添加脚本组件,一种是在Project                                      面板中创建,然后拖动到物体上。

013

类->方法

Start方法下放置一些初始化的代码

UPdate方法下放置持续调用的代码

private 私有的

public  公共的

private Rigidbody rd;     //定义刚体组件的字段(变量)

void Start () { 

 rd = GetComnponet(); //获取刚体组件

}

void Update (){

rd.AddForce(new Vector3(x,y,z));  //使用刚体组件下的AddForce的方法添加力,参数指定力的方向

}

014

单精度浮点数 float

双精度浮点数 Double

private Rigidbody rd;

public int Force = 5;

void Start () { 

 rd = GetComponent();

}

void Update () {

  float h = Input.GetAxis("Horizontal");

  float v = Inout.GrtAxis("Vertical");

  rd.AddForce(new Vector3(h,0,v) * Force);

}

015

相机跟随游戏物体的代码

private Transform playerTransform; //指定更随目标的位置

private Vector offset;

void Start () {

  offset = transform.position - playerTransform.position;

}

void Update () {

  transform.position = playerTransform.position + offset;

}

016

控制小球的移动范围

通过Cube创建墙

017

创建可收集食物

使x,y,z轴各旋转45度即可得到一个立起来的物体

当场景中有很多一样的物体,我们可以将这个物体做成一个Prefab(预制体)

如果想平移一个旋转后位置不规则的物体,我们可以将Local(局部坐标)改为世界坐标(Global)

018

控制物体的旋转

void Update () {

  transform.rotate(new Vector3(0,1,0));

}

019

关于Unity手册(API函数和Manual) *重点*

点开Help帮助选择Scripting References(脚本帮助手册)

①  API手册就像一个字典,可以查看组件有哪些功能,哪些方法

②  Manual是脚本手册,对功能做介绍,相当于教程

020

碰撞检测 *重点*

检测: ① 碰撞检测

      ② 触发检测

      ③ 射线检测 (Roguelike项目中有用到)

*碰撞检测属于Rigidbody发出的事件*

碰撞检测的三个阶段: ① 俩个物体接触的那一刻 OnCollisionEnter (只会触发一次)

                    ② 俩个物体接触的时候  OnCollisionStay  (触发很多次)

                    ③ 俩个物体分开的那一刻 OnCollisionExit  (只会触发一次)           

//碰撞检测

void OnCollisionEnter(Collision collision) {

    //collision.collider //获取碰撞到的游戏物体上的Collider组件

    //string name = collision.collider.name; //获取碰撞到的游戏物体的名字

    //print(name); //print可以把一个字符串输出显示到控制台    tip:Ctrl + Shift + C 控制台快捷键

    if(collision.collider.tag == "Food"){

      Destroy(collision.collider.gameobject);

  }

}

021

触发检测控制主角捡起食物

※ 碰撞检测会触发一个物理效果(如物体碰撞的停顿)

※ 触发检测会穿过物体 (如主角进入某个区域,门会自动打开的游戏场景)

//触发检测

void TriggerEnter(Collider collider) {

  if(collider.tag == "Foods"){

    Destroy(colldier.gameObject);

  }

OnTrigger属于MonoBehaviour类

※ 切记要勾选被碰撞体的 is trigger,不要勾选主角!

022

显示分数和胜利检测

创建分数GUI: ① 在Hierarchy面板中右键UI创建Text文本

                            ② 点选最上角2D小图标切换视角,按住Alt选择左上角

※※ 当我们控制整个物体的时候就定义一个GameObject(public GameObject name;),控住组件的时候我们可以定    义组件的名称(public Text text;)

public int score = 0;

public Text text;

public GameObject winText;

void OnTriggerEnter (Colloder collider) {

  if(collider.tag == "Foods"){

    score++;

    text.text = score.ToString();

    if(scor == 8){

        winText.SetActive(true);

          }

    Destroy(collider.gameObejct);

  }

}

023

游戏的发布和运行

File - build setting

相关文章

网友评论

      本文标题:Unity5.2入门课程笔记-Roll A Ball

      本文链接:https://www.haomeiwen.com/subject/nscejftx.html