用unity来制作2d游戏。 如何能通过点击按钮A来让game gameobject.active B active然后game gameobject.active C inactive?

额头深刻的皱纹和斑驳的脸庞,让人感受到岁月的无情。
当地人给断掉的鼻子贴上了创口贴,一时在网上走红。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  这篇文章将讲解怎么使用制作简单的贪吃蛇游戏。贪吃蛇是一种街机游戏,最早的原型诞生于1976年。正如大多数街机游戏一样,它开发简单,且娱乐性强(至少克森的童年时玩它玩过来的)。
  需要知识
  我们的文章不需要什么特别的技巧,只需知道Unity的基本操作,例如:GameObject和Transform的概念等等。即使你不了解也没关系,只要你跟着我的思路来即可。
  Unity版本
  在本章教程中,我们将使用.0.04版本来制作。对于旧的版本也可以正常运行,不过建议大家还是使用.0以上的版本。
  项目设置
  让我们开始吧。首先先创建一个项目:
  将该工程命名为“snake”,路径由你们来设置,这里我设置的是C盘根目录下,选择2D开发,然后点击创建项目按钮:
  我选择场景中的Main Camera(主相机),然后再Inspector面板中修改相机的Background为黑色背景,最后调整Size和Position,如下图所示(注意参数要一样,方便后续跟进):
  Size是相机缩放调节的参数
  添加边界
  我们将使用下面两张图片来制作我们的边框:
  border_horizontal.png
  border_vertical.png
  你可以右击将图片保存到你项目的Assets文件夹下。
  我们再一次在Assets下选择这两张图片,如下所示:
  之后,我们可以在Inspector面板中改变他们的导入设置,改变参数如下图所示:
  Pixels Per Unit 是在图片中的一个像素与世界坐标中的一个单位之间的比例尺。贪吃蛇每移动一步将对应游戏世界坐标上的一个单位。这就是为什么我们要把Pixels Per Unit设置为1的原因。
  现在,我们可以制作我们的边框了。首先把Assets下的两张图片拖拽到Hierarchy面板下,拖拽两次(你也可以通过复制的方式实现),如下图所示:
  使用border_horizontal来制作顶部和底部的边框,使用border_vertical来制作左边和右边的边框。
  让我们为它们重命名一下,方便查找。如下图所示(Top是顶部,Bottom是底部,Left是左边,right是右边):
  现在,它们在游戏中只是一张一张的图片,毫无卵用,现在就让我们为这些图片添加Colliders(碰撞器)组件,让这些图片变为一堵堵墙吧。
  首先先在Hierarchy面板中选择那四张图片,如下图所示;
  好,把它们都选中之后,在Inspector面板中找到Add Component按钮,点击它,然后找到Physics2D,最后点击Box Collider2D即可,如下图所示:
  刚刚我们所做的操作,不用写任何一行代码,便能让一张毫无卵用的图片编程了一堵墙,太感谢Unity这个强大的游戏引擎了。
  创建食物预制体
  我们不想让我们的贪吃蛇饿死,因此,让我们在游戏中随机生成一些食物,提供给蛇食用吧。和上面的操作一样,我们将使用一张图片来制作食品。在我们的教程中,他只是一个像素的色块:
  food.png
  还是老样子,右击该图片,将它保存到你项目的Assets文件夹下。
  还是老样子,将它的导入设置修改一下,如下图所示:
  好吧,让我们把food拖到场景中,Unity会自动的帮我们在Hierarchy面板中创建一个相对应的游戏物体,如下所示(你的位置也许跟下图不一样,这根据你拖拽的位置而定):
  每当贪吃蛇碰到food(也就是食物)的时候,应当获得一些相应的信息。因此我们也要给
  food(食物)添加Collider(碰撞器)组件。
  一个游戏物体没有Collider(碰撞器)组件,那么它只是一个可视化物体(就是没有交互功能的物体),它不是物理世界的一部分。一旦我们为游戏物体添加了Collider(碰撞器)组件,它如一堵墙,任何物体都不能穿透它,且能通过碰撞检测事件来进行交互,如:OnCollisionEnter2D、OnCollisionStay2D等等。假如我们勾选了Is Trigger,它便如水一般,可以穿透它,且能通过触发检测事件来进行交互,如:OnTriggerEnter2D、OnTriggerStay等等。
  当贪吃蛇穿过food(食物)时,贪吃蛇应该得到一些通知(就是所谓的响应事件)。然而食物不能像墙一样不能穿过它,因此我们现在要做的就是为food(食物)添加Collider(碰撞器),并且勾上Is Trigger:
  好了,现在我们不想让food(食物)在游戏一开始就出现。因此我们把它做成一个预制体,以便我们使用Instantiate函数来生成它,每当我们需要它的时候。现在,让我们把food(食物)重命名为“FoodPrefab”,然后把它拖到Assets文件夹下:
  现在我们可以删除Hierarchy面板中的FoodPrefad了,因为我们暂时不需要它了。
  生成食物
  让我们在游戏开始之后,间隔几秒就在随机的地方生成一个food(食物)。那么,就让我们创建一个脚本来控制食物的生成吧。我们将把脚本放置在Main Camera下(因为Main Camera始终在游戏场景中)。首先,在Hierarchy中选择Main Camera,然后再Inspector面板中招到Add Component按钮,点击New ,在Name的输入框中输入SpawnFood,脚本类型选择C Sharp,如下所示:
  然后打开该脚本(双击即可):
  我们不需要Update()函数,把它删除了:
  这个脚本需要获取食物预制体,因此,我们将添加一个类型为GameObject类型的公开变量:
  食物应该是在边界内生成的。因此,我们也需要在我们的脚本中通过一些变量获得边框位置的相应信息,如下所示:
  我们已经将他们声明为Transform类型了,因此我们如borderTop.transform.posion这样调用position了,直接borderTop.position即可。
  让我们创建Spawn()函数在边界内生成food(食物)。首先我们通过x变量来获取左边界和右边界之间的随机位置信息,然后通过y变量来获取上边界和下边界之间的随机位置信息。然后我们便在该位置生成food(食物):
  x 和 y通过使用(int)强制转换来确保该food(食物)生成的位置是整数,如(1,2),而不是带有小数点的形式,如(1.234, 2.74565)。
  现在,让我们的脚本在每几秒后调用Spawn()函数,我们可以通过使用InvokeRepeating()函数来做:
  InvokeRepeating()函数用于在每几秒内重复调用某个函数。第一个参数是函数的名字,第二个参数是第一次调用的时间,第三个参数是间隔调用的时间。在上面的代码中,在游戏开始后3秒调用Spawn函数,然后每4秒再重复调用Spawn函数。
  下面是SpawnFood函数的完整代码:
  现在让我们保存脚本,然后回到Inspector面板中,你将会发现SpawnFood脚本下多了几个卡槽,现在我们要做的就是找到对应的预制体,将其拖进卡槽中,如下图所示:
  好吧,现在让我们点击Play按钮,然后等待几秒钟,我们将能看到游戏场景中有了一些小点点(食物):
  来源:Unity墙外的世界
  加入Imagination 中文社区,获取更多最新科技资
  Imagination中文技术社区权威发布有关Imagination公司CPU,GPU以及连接IP、无线IP最新资讯,提供有关物联网、可穿戴、通信、汽车电子、医疗电子等应用信息,每日更新大量信息,让你紧跟技术发展,欢迎免费注册。网址:
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:}

我要回帖

更多关于 unity3d gameobject 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信