| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> unity入门《敲方块》案例分享 -> 正文阅读 |
|
[游戏开发]unity入门《敲方块》案例分享 |
案例《打砖块》:
在ground的属性面板中mesh renderer组件中可以看见如图 材质Ground的属性面板中metallic:金属属性(反光)、smoothness:光滑度(反光)
然后全选(shift键,mac的fn键上面的键)复制,y值+1,形成一堵墙(cube31) 注意!!!:上面复制行为在此案例中是错误的。 上面的墙没有物理效果,即不回下落 因此,删掉刚刚复制的cube,点击cube(最开始的)属性面板add component 搜索rig添加rigidbody(物理引擎模拟真实物理世界) 在material文件内新建文件prefabs,把刚刚添加了物理引擎的cube移动到文件夹内,制作预制体(cube变成蓝色) 直接把预制体移动到场景里即可生成一个一模一样的cube(效果相当于复制),通过预制体生成的叫做其实例,也是父与子的关系。(基础操作提过) 【实例只是讲解一下,制作墙还是和上面一样,复制预制体cube,一边按复制快捷键一边移动物体】 为了看起来方便,可以新建一个empty命名为env,把所有cube放进去 创建一个球体,调成球的大小为0.5 0.5 0.5 把球体移进prefabs制作预制体 在scene里面新建文件夹scripts用来存放脚本shoot,把shoot移到main camera内 简单介绍,不是游戏代码: 控制台: 定义子弹 Main camera的shoot脚本下面bullet写的none 把子弹预制体直接移进去即可 代码如下: 给小球增加一个刚体添加速度 完整代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Shoot : MonoBehaviour { ??? public GameObject bullet; ??? public float speed =5;//在这里定义速度方便在面板中直接改速度的值 ??? ??? void Start() ??? { ??????? ??? } ??? ??? void Update() ??? { ??????? if(Input.GetMouseButtonDown(0))//判断鼠标键的按下,0表示左键 ??????? { ??????????? GameObject b = GameObject.Instantiate(bullet,transform.position,transform.rotation); ??????????? Rigidbody rgd= b.GetComponent<Rigidbody>();//得到刚体组件 ??????????? rgd.velocity=transform.forward*speed;//施加速度,方向(foward表示0 0 1)*速度 ??????? } ??? } } 墙太白,把directional light属性面板中的intensity改为0.7(效果更加明显) 在main camera属性面板的shoot组件中更改speed如改成20(效果更明显) 注意:speed=20和代码中speed=5不符,游戏运行以属性面板中你改的为准运行 控制相机的移动 新建脚本movement,把movement移动到main camera的shoot脚本下面 控制相机左右运动的代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Movement : MonoBehaviour { ??? public float speed = 3;//自己修改移动速度,按a,d也可以控制左右 ??? void Start() ??? { ??????? ??? } ??? ??? void Update() ??? { ??????? float h = Input.GetAxis("Horizontal"); ??????? //水平值,不按键的时候值等于0;按下左右键的时候会变,用来检测方向键按向 ??????? float v = Input.GetAxis("Vertical");//上下键 ??????? //Debug.Log(h);//按右键返回1,左键返回-1 ??????? transform.Translate(new Vector3(h,v,0)*Time.deltaTime*speed);//减速,*时间间隔,1/50 ??? } } 整个案例就到此为止了,谢谢观看。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 18:36:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |