unity入门必备的案例2.0

您所在的位置:网站首页 unity代码生成预制体 unity入门必备的案例2.0

unity入门必备的案例2.0

#unity入门必备的案例2.0| 来源: 网络整理| 查看: 265

👨‍💻个人主页:@元宇宙-秩沅

hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

本文由 秩沅 原创

收录于专栏 unity实战入门

你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!栓Q

目录

那么在这里小编其他的话就不说了直接步入主题:

本次入门学习分为以下几个步骤:

1.五大主要面板

2.基本操作和组件介绍

3.控制3Dobjectk物体运动

4.相机的实时跟随

5.预制体的设置(标签,旋转效果)

6.碰撞器,触发器及其脚本

7.UI幕布一.五大主要面板1.Project面板(工程面板)---里面主要包含插件

以上的文件包含物体的材质,脚本,插件等有关场景中的一切

2.Hierarchy面板---显示当前场景有哪些事物。

初始场景中只有:MainCamra相机和DirectionalLIght灯光

3.Inspector面板(检视面板)-----查看物体有哪些组件组成的

4.Scene面板(场景面板)

5.game面板(游戏面板)。=

二.基本操作和组件介绍1.基本操作

如上图所示 (1)拖拽 (2)移动 (3)旋转 (4)大小(5)2d大小(6)旋转+移动+大小

分别对应快捷键 Q,W,E,R,T,Y

2.基本组件介绍首先在Hierarchy面板中右键选中- 3Dobject创建一个3d模型

1.物体的基本组件(在Inspector面板中):(1)Transform -----位置和大小

(2)Mesh Renderer--渲染控制显示

(3)Mesh collider---碰撞器

(4)Mesh Filter-----网格

三.控制3Dobjectk物体运动首先创建一个地面在Hierarchy面板中右键-3dobject-pian创建一个地面,然后右键-3dobject-cube创建一个正方体。

1.添加刚体在inspecter面板中点击 add component 在搜索面板中输入Rigidbody(刚体),代表此时物体有了物理信息,重量质量等等,此时你若将正方体上移脱离地面然后按下如下图所示的执行按钮,你会发现物体做自由落体运动并且停止到地面上

2.控物体运动(1).操作介绍那么这个时候我们得写脚本了(c#代码),首先点击Add component 然后移到最下方点击 New script(新脚本),输入自定义脚本名称,此时我们可以输为sport,按下creat and add ,你会发现在,project中会出现如下:

点击 ,然后他会打开VS(前提自己安装vS2019社区版--个人推荐 ),以下是自动出现的基本代码模板,start的方法只运行一次,但是Update是大概每秒60次,也就是一直在运行

(2) 脚本代码using System.Collections;using System.Collections.Generic;using UnityEngine;

public class sport : MonoBehaviour{ public Rigidbody cube;//创建刚体对象 // Start is called before the first frame update void Start() { cube = GetComponent();//Cube得到刚体组件(方法) }

// Update is called once per frame void Update() { float a, b, c; //内置方法可在Edit- projectsettings -Axis中查看 a = Input.GetAxis("Horizontal");//按ws或者上下方向可以向前前后移动 b = Input.GetAxis("Vertical"); //按ad或者左右方向可以向左向右移动 c = Input.GetAxisRaw("Jump"); //按一直空格可以飞行跳跃 cube.AddForce(new Vector3(a, c, b) *10 ); // Addforce也就是给cube添加一个力 Vector是它的三维方向轴 //所以按wsad和空格 可以对物体在不同的方向产生不同的力从而达到运动的作用 //乘上10是为了加快它的速度 }

}然后Heritchy按ctrl+s 保存再切换到unity,点击Hierarchy面板的cube再将在Inspecter面板中Rigidbody拖到Script中(赋予对象),如下图有有绿色的刚体物件显示,然后点击运行,就可以实现物体基本的运动了

四.相机的实时跟随若想实现实时相机画面跟随物体运动那么见如下步骤:

1.基本操作介绍首先点击Hierarchy面板中的Main camera,再看到Inspector面板点击add Component ,按照上文介绍过的操作,创建一个脚本自定义命名(followsight),生成后打开编辑,代码如下。

2.脚本代码using System.Collections;using System.Collections.Generic;using UnityEngine;

public class followsight : MonoBehaviour{ public Transform cube; //创建跟随对象 private Vector3 offset; //偏移视角 // Start is called before the first frame update void Start() { offset = transform.position - cube.position; //记录初始相机到物体的三维差 }

// Update is called once per frame void Update() { transform.position = offset + cube.position; //此时相机的位置就一直跟着cube的位置变化而变化 //那么此时物体和相机就成了形影不离的整体 }

}然后按ctrl+s 保存再切换到unity,点击Hierarchy面板的Main camera再将Hierarchy面板中的cube物体拖到在Inspecter面板中Script中(赋予对象),如下图。这样就可以实现相机的实时跟随了。

五.预制体的设置1.介绍:什么是预制体?预制体你可以理解为NPC,野怪,地铁跑酷里面的金币,那么接下来,小编将创建是Tag(标签)为Food的预制体,将实现实现cube触碰到它后食物消失,形成,吃掉食物的效果

2.创建预制体(添加标签相当于将其分类,方便系统识别,和自身梳理)首先在Project面板创建自定义命名prefabs(预制体)文件夹,后在任意在hierarchy面板创建一个3Dobject物体,在Inspector面板点击Tag将untagged换成add Tag,然后点击+号,添加自定义tag(标签),此时我们添加一个自定义为food的标签,退出后再选择。

之后我们将位于Hierarchy面板的food对象拖拽至prefabs的文件夹中,此时物体的图标会变蓝,之后我们可以在它Inspectors面板的transform组件中改变它的大小或位置,(当然按R也可以)然后按住ctrl+d进行预制体复制

此时为了方便梳理,我们可以创建一个空物体(右键creat +creatempty),然后按住shift进行多项选择,将其一起拖拽进空物件中,并可以将,空物件命名为env(环境),这样预制体的基本创建就完成了

六. 碰撞器,触发器及其脚本1..让预制体运动(旋转) 那么此时我们的创建一个脚本,脚本代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;

public class rotate : MonoBehaviour{ public float speed=5; // Start is called before the first frame update void Start() {

} // Update is called once per frame void Update() { transform.Rotate(Vector3.forward * speed); //rotate是旋转, 那么forward是向前当然可以选其他方向,然后可以看到我定义了一个speed, //那么这个speed也就是速度的意思可以在Inspector面板中的script组件中修改speed的值 }

}

为了方便观看我们给物体都添加个色彩,在Project面板中创建一个存放材质的自定义文件夹,然后创建Material(右键-creat-Material)材质,然后在右边Inspector面板调色后推拽到物体身上,如下图:

2.碰撞器,触发器《主体碰到预制体消失(实现吃食物的代码)》1.首先我们得在Inspector面板看到box collider碰撞器组件,然后勾选is tigger 让其从碰撞器变成触发器(当然触发器也是碰撞器得一种),勾选注意不要给prefabs预制体添加刚体组件,不然它会掉下去,因为此时它没有了碰撞效果,任何物体经过它后会穿透

2.添加触发脚本

using System.Collections;using System.Collections.Generic;using UnityEngine;

public class chufa : MonoBehaviour{

// Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } // private void OnCollisionEnter(Collision collision)//这个是碰撞器方法,enter意味着发生碰撞接触时会发生什么 //private void OnCollisionEnter(Collision collision)//这个是停留时会发生什么 //private void OnCollisionExit(Collision collision)//那么这个就是离开时会发生什么 //此时我们是接触器如下 private void OnTriggerEnter(Collider other)//接触时 { if(other.gameObject .tag =="food")//当接触的物体它的trandform组件中的tag标签是food时执行 { Destroy(other.gameObject ); //此时让食物物体对象消失 } }

}7.UI幕布不管添加要显示在幕布上的什么组件。添加时幕布只有一个

1.幕布中添加文字右键+UI+lagacy+Txet,则会出现以下:物体中间出现文字,当然幕布是透明的,

如果此时你想更改文字的位置,大小颜色的话 ,看到inspector面板的txet框框,在character中可以改变字体字样,大小,那么在Rect Transform组件中点击center选择位置,则可以实时固定字体的位置,意思是不管画面怎么移动,字体在屏幕上的位置不会改变。

此时小编将其放到了右下角,并且修改为hello unity、

2.添加照片首先将你的照片电脑文件夹中拖拽到project面板中,然后单击它后看到Inspector面板,将Texture Type改成Sprite(2d and ui),之后点击屏幕,他会弹出一个提示框,点击框中的Apply,

然后在Hierarchy面板中在canvas对象位置右键+UI+image,创建一个幕布图片组件,然后看到右边Inspector面板中的image组件,将Souce image 从None 换成上面已经弄好的ui材料,

此时你即可看到屏幕中出现的画面,那么跟文字一样,将其改变大小,位置,实时固定

3.添加视频首先你得在Project面板创建一个渲染材质右键+creat+Reader texture,将其移到在幕布中新创建得位于Inspector面板的Raw iamge 的组件中,然后再按 Add component添加 Vidio player组件,然后点击source选择视频文件。

4.添加激活物体脚本作用在当你吃完食物之后,要显示胜利的画面,那么上面的UIxai显示就是为此,那么此时你的先将其隐藏,然后通过脚本代码,吃完全部的食物后激活。

脚本如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;//涉及UI时需要加上这个命名空间public class chufa : MonoBehaviour{

// Start is called before the first frame update public float socrce = 0; //定义一个分数值让他初始值为0 public GameObject ui; //创建要激活的对象gameobjet类型 void Start() { } // Update is called once per frame void Update() { } // private void OnCollisionEnter(Collision collision)//这个是碰撞器方法,enter意味着发生碰撞接触时会发生什么 //private void OnCollisionEnter(Collision collision)//这个是停留时会发生什么 //private void OnCollisionExit(Collision collision)//那么这个就是离开时会发生什么 //此时我们是接触器如下 private void OnTriggerEnter(Collider other)//接触时 { if (other.gameObject.tag == "food")//当接触的物体它的trandform组件中的tag标签是food时执行 { Destroy(other.gameObject); //此时让食物物体对象消失 socrce++; //吃到一个食物得到一分 } if(socrce == 4.0F) //F是float的后缀当吃到四个食物时就激活胜利信息 { ui.SetActive(true);//setActive就是激活true就是实现按钮 } }

}那么这就是本次的全部内容啦,有收获的朋友请点个支持再走吧你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!栓Q



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3