Unity官方案例——Roll a ball

Unity 3D 学习(一)——Roll a ball 今天含泪开一个新坑——Unity 3D。由于导师调整任务,最近要和师兄一起搭建3D虚拟仿真平台,特此学习。ROS也会继续学习下去,希望能够兼容到一起。Let’s get it ! Unity 3D 界面设置与介绍 目前使用的版本是:Unity 2020.3.25 ... 阅读详情

诶呀,图片加载出了点问题!
现在的我还是一名 Unity3d 游戏开发初学者,所以现在都在围绕 Unity3d 的官方案例来做练习,为此写下一些文章作为笔记,文章中难免会有一些疏漏,有些不当之处还望指正。

项目简介

首先玩家可以控制一个小球,去吃那些悬浮在平面上的小方块,全部吃玩就游戏结束了,是一个很简单的小游戏。

创建工程

首先我们创建一个空的工程

诶呀,图片加载出了点问题!

环境搭建

创建地面

在 Hierarchy 界面中右键选择 3D Object 中的 Plane 创建一个地面,其中将他 Inspector 界面中的 Scale(X:2,Y:1,Z:2)使地面扩大一下,这里需要让大家养成一个好的习惯就是物体的需要命名并且要有意义,所以我将我们的 Plan物体名改为 Ground。

诶呀,图片加载出了点问题!

给地面添加材质

但由于这地面太白了,再加上默认的灯光效果很亮表现得很刺眼,所以我给地面添加了一个黑色的材质,这里有需要大家养成一个文件分类的好习惯,所以我在我们的 Assets 文件夹中新建了一个 Materials 文件夹用来存放我们需要用到的材质文件,选中 Materials 文件夹后右键选择 Create 选项中选择 Material 就可以创建一个材质文件了,我将它改名为 Ground,其中在他的 Inspector 界面中将 Main Maps 中的 Albedo 的颜色调整为黑色,最后只需将这个材质文件拖到我们场景中的地面上即可。

诶呀,图片加载出了点问题!

添加墙

在 Hierarchy 界面中右键选择 3D Object 中的 Cube 来创建四周的墙,其中在它们的 Inspector 界面中都设置 Scale(X:21,Y:1,Z:1),它们的位置分别设置为

Wall[Positon(X:0,Y:0,Z:10)],

Wall1[Positon(X:0,Y:0,Z:-10)],

Wall2[Position(X:10,Y:0,Z:0),Rotation(X:0,Y:90,Z:0)],

Wall3[Position(X:-10,Y:0,Z:0),Rotation(X:0,Y:90,Z:0)]

这里又有一点需要大家养成的习惯就是若有相同的物体应该创建一个空的物体将他们都存放在你里面,所以我在 Hierarchy 中创建了一个空的物体改名为 Walls 将这四个墙存放在其中。

诶呀,图片加载出了点问题!

设置摄像机

选择我们场景中的 Main Camera 设置它的 Position(X:0,Y:10,Z:-10),Rotation(X:45,Y:0,Z:0)即可。

诶呀,图片加载出了点问题!

添加 Player

在 Hierarchy 界面中右键选择 3D Object 中选择 Sphere 将它改名为 Player,设置它的 Position(X:0,Y:0.5,Z:0)

诶呀,图片加载出了点问题!

添加 Pick Up

在 Hierarchy 界面中右键选择 3D Object 中选择 Cube 将他改名为 Pickup ,其中几个比较关键的设置是 Position 的y的值最好要大于1因为过低 他会卡在地面里,Rotation(X:45,Y:45,Z:45),还有一个特别关键的就是将 Box Collider 中的 Is Trigger 勾上,它的作用是做触发器,简单来说就是就是当两个物体发生碰撞不产生碰撞效果,但会触发碰撞事件(如果还不能理解,自己在 Unity 中实验一下),然后就是多创建几个 Pick Up 位置你们随便放,不过这里也有一个方法方便我们创建多个相同的物体并且还可以同步之后需要更改的设置,那就是创建 Prefab。我们在 Assets 文件夹中创建一个 Prefabs 文件夹,将我们创建的 Pickup物体拖至此文件夹,当我们看到 Pickup 物体的名称变蓝后,这就意味着我们的 prefab 创建完成,当我们需要创建 Pickup 物体时,现在只需将 prefab 中的 Pickup 拖至我们的场景中即可创建,然后就是创建一个空的物体改名为 Pickups 用来存放我们创建的 Pickup 。

诶呀,图片加载出了点问题!

在 Inspector 界面中找到 Tag 选项后单机再选择选项中最下方的 Add Tag… 后会来到我们的 Tags & Layers 界面,在下方会看见一个 + 标志后单机在输入框中输入 PickUp 后选择 Save 后即可添加标签

诶呀,图片加载出了点问题!

添加 UI

在 Hierarchy 界面中右键选择 UI 后再选择 Text 选项就可以添加我们的 UI 了,我们将创建出来的 Text 文件改名为 CountText,我们可以在 Inspector 界面中的 Text(Script) 中调整文字内容、字体、字体大小、颜色等多种属性,我们必须要做的是将文本默认的内容给删掉就行了,其他的设置看自己喜好了,但我们要将它至于界面的左上角该如何操作呢?我们可以在 Rect Transform 中看到一个田字格,我们单机一下它就会出现很多位置选项,但是并没有我们所需要的左上角,这时候我们只需要一直按住键盘上的 Alt 键就会发现上面的位置选项发生了变化,之后就可以很明显的看到左上角的选项然后我们选择它就可以了,然后在 Canvas 文件夹下在创建一个 Text 改名为 WinText 用来存储我们的胜利文本的,也要将文本内容删去,位置居中默认就行了,其他设置自定义。

诶呀,图片加载出了点问题!

游戏运行

从这儿起就要开始我们的脚本编写了,现在 Unity3D 主流脚本编辑语言是 C#,不过像我现在用的 Unity 3D 2018.2的版本脚本语言只剩下了 C#,所以推荐大家写脚本还是用 C# 来编写,学过的朋友理解起来就很方便了,没学过的朋友可以从网上找找相关教学视频了解一下,不过有一点编程经验的其实理解起来还是很简单的,我会在下面脚本中写下相应注释的,方便一些初学者理解的。

Unity官方有一个脚本文档,在遇到什么不懂得问题或者需要完成什么操作脚本忘了怎么写时可以进行查阅。

Unity官方脚本文档

Player 的移动

选择我们的 Player 物体文件,在 Inspector 的下方点击 Add Component 在其中的输入框中输入 Rigidbody 回车确定选择,即可给我们的 Player物体添加刚体组件,刚体组件的用处就是给物体添加物理属性的,其中我们将 Angular Drag 的值改为0,意思是取消小球的摩擦力。

诶呀,图片加载出了点问题!

还是点击 Add Component 在输入框中输入 PlayerController 选择 New script 再点击下方的 Create and Add 即可给我们的 Player 挂载脚本了,然后我在

Unity官方案例进阶--Roll a ball 简介 经过上一次的学习,我又想改进一下这款 Roll a ball 游戏,首先这款游戏只有胜利没有失败,所以我想定义一个条件来控制它的输赢,因此我想到了如下的方案: * 使我们的玩家控制 Player 在规定时间内达到一定的分数就胜利,反之则失败 * 任务目标 这里只是大概的目标内容,还有一些细节会在后面完成的时候体现出来。 完成 PickUp 的随机刷新出现,每隔3秒刷新一个 做... 阅读详情

相关推荐

Unity Roll-a-Ball深度解析:从物理引擎到脚本优化的核心避坑指南

在Unity游戏开发中,物理引擎是实现真实交互体验的核心技术。其原理是通过Rigidbody组件和物理系统,模拟力、碰撞与运动规律,而非直接操控Transform。这种物理驱动的价值在于能自动处理碰撞检测、提供真实运动感,并优化性能,广泛应用于角色控制、物体交互等场景。本文以经典案例Roll-a-Ball为切入点,深入剖析物理驱动与变换驱动的本质区别,并详解组件化架构的设计思想。通过对比ForceMode的不同选择,以及Update与FixedUpdate的合理使用,揭示如何避免新手常见的性能陷阱与逻辑误区

weixin_31881651的博客 292

Unity官方教程Roll-a-ball (一)

这是一个官方的教程,附上地址http://unity3d.com/cn/learn/tutorials/projects/roll-a-ball/set-up,因为是youtube的,怕有些人看不了,所以自己做一遍,并记录下过程。对象是beginer,刚开始一看,就是控制一个球,去吃周围的正方体,一想可能也就是很简单的,但是就是简单,也有可能补充到你不了解的方面,比如灯光的设置,所以还是准备把它写

破晓的专栏 4710

Unity 3D 官方教程—— Roll A Ball 学习记录

unity 官方教程 roll a ball 学习笔记。   1. 新创建一个项目   2. 养成良好的习惯,第一步就是保存场景。   先在右下方的 “project” 选项卡下点 “create”,选择 “Folder” 重命名为 “_Scenes” 来容纳我们的场景。 之后在左上角的 “File” 里选择 “Save Scenes” 或者直接快捷键 “Ctrl + S” ...

2484

Unity官方实例教程 Roll-a-Ball

一、添加游戏对象——平台(Plane) 第1种:通过菜单GameObject->3D Object->Plane来创建,如下图:     第2种:通过Hierarchy窗口中Create按钮来创建,如下图:   第3种:通过右键菜单创建,我们在Hierarchy窗口中单击右键会弹出菜单,如下图: 二、添加我们的主角——球体(Sp...

tsundere的博客 1146

Unity官方教程《roll-a-ball》学习笔记

第一次接触unity项目,学习了unity官方教程roll-a-ball。接下来是我的整个学习过程1.项目预览     项目学习的过程分为了这样几个步骤:      1.项目简介。      2.环境和小球      3.相机视角和游戏区域      4.收集功能,滚动和创建游戏第一个部分是介绍了整个游戏的玩法,如题所说的,滚动小球,然后触碰消掉方块,所有方块都被消除完毕后,游戏结束。第二部分介绍...

qq_33316262的博客 7146

制作一个基于Unity3D的Roll-a-ball滚动小游戏教程

选择"GameObject" -> “3D Object” -> “Sphere”,创建一个球体作为玩家控制的对象。在本教程中,我们将从零开始制作一个简单的Roll-a-ball滚动小游戏,让玩家控制球体收集场景中的物体。然后,创建一个新的场景并将其命名为"Roll-a-ball"。创建一个新的C#脚本并将其命名为"PlayerController"。将"PlayerController"脚本拖拽到球体对象上,将脚本附加到球体上。将"Pickup"脚本拖拽到收集物体上,将脚本附加到所有的收集物体上。

DllCoding的博客 1135

【unity实践demo】unity-2D游戏官方案例-

#实战基础

秩沅 2112

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

Plaxis软件简介及 Plaxis Python API环境搭建、自动化建模、Python全自动实现、高级案例分析

本次课程主要针对岩土工程中的各种问题(塑性、渗流、固结、动力、稳定安全、热力TM),用四天时间,教大家如何一步一步地搭建自己的Plaxis模型,包括Plaxis Python API的连接与配置、外部Python编译器的使用、Python命令流自动建模过程、Python远程脚本读取输出结果等,其中的Python建模模块尽可能做到让学员零基础开始,通过提供标准命令流库,使用搭积木、摆乐高的形式模块化进行,加强学员的易上手、可操作性。(2)钻孔的建立、土层的建立、土层属性、水力条件及初始条件、导入土层。

CCfz566的博客 1464

Unity3D赛车游戏+脚本基础

本章主要介绍Unity的基础开发流程以及涉及到的概念。这个过程需要我们学会编写一些游戏脚本,在这讲的过程中我们会完成一个赛车小游戏,因此,在讲述这些基本概念和流程的时候,会同时涉及到一点脚本的开发基础.在游戏,电影和动画中,都有一个渲染的帧率,电影是24帧/s,游戏大概是30帧/s(当然也有60帧/s的)。在unity里面1秒钟,Update方法执行了30次。1秒钟有30帧,帧与帧之所消耗的时间是不一样的,那么我如何知道上一帧用了多少时间?Time.deltaTime就是为了解决这个问题。

m0_58367586的博客 7660

Ansys Zemax | 公差分析中的补偿器优化:如何提升系统良率?

本文深入探讨了在Ansys Zemax公差分析中如何有效设置与优化补偿器以提升系统良率。文章指出,补偿器是连接理想设计与现实生产的关键,通过模拟实际装配中的调整(如后焦距),能显著改善公差分析的“悲观”预测。详细介绍了补偿器的添加方法、多补偿器策略、评价函数设计以及通过灵敏度分析和蒙特卡洛档案优化补偿效果,旨在帮助光学工程师制定更符合生产实际的公差策略,从而有效提升产品良率。

weixin_28419039的博客 623

【PLL】分频器设计权衡:从CMOS到CML的电路实现与优化

本文深入探讨了PLL中分频器的设计权衡,比较了CMOS和CML两种电路实现的优缺点。通过实际案例分析,展示了如何在速度、功耗和噪声之间取得平衡,特别是在5G射频芯片和Wi-Fi 6E等高频应用中的优化实践。文章还提供了混合架构设计和电源噪声协同优化的实用技巧,适合电路设计工程师参考。

weixin_42521843的博客 444

高频注入是否需要对齐和强拖操作?

高频注入技术显著优化了传统FOC启动流程,但仍需部分对齐操作。传统启动必须包含位置检测、对齐和强拖等步骤,而高频注入可实现零速闭环,简化或跳过部分环节。高频注入下的对齐主要用于验证有效性、初始化观测器和建立初始磁链,形式可大幅简化。虽然高频注入基本消除了传统强拖需求,但在重载、弱凸极等特殊情况下仍需辅助。实际应用中可采用自适应混合策略,根据负载和电机类型选择最优启动方案。高频注入使对齐和强拖从"必须"变为"可选优化项",是无传感器控制的重要进步。

汽车软件开发 208

Valgrind 从入门到精通:内存调试和性能分析

Valgrind 提供了强大的 API,允许开发者编写自定义的检查工具。通过扩展 Valgrind,可以针对特定场景实现更精准的检测。

大模型大数据攻城狮的专栏 1218

FANUC机器人有关动作速度倍率的相关系统变量-解释说明

FANUC机器人有关动作速度倍率的相关系统变量-解释说明 1.$SHFTOV_ENB 默认值:0 名称:位移倍率的有效/无效 含义:位移倍率功能,通过按住SHIFT键的同时按下倍率键,将速度倍率更改为5档 设定值:有效1; 无效0. 有SHFIT键:微速–低速–5%–50%–100% 2.MCRGRP[GROUP].MCR_GRP[GROUP].MCRG​RP[GROUP].PRGOVERRIDE 默认值:100 名称:程序倍率 含义:设定程序再生时的、机器人动作速度比率 设定值:0~100(%) 3.S

Robot_PLC_HMI_Automation 9324

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

下一篇: Markdown的入门上手指南
NoahCode
博客等级 码龄9年 24粉丝 12原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值