【Unity项目实践】合成大西瓜
  EFTJ6596AiAP 2023年11月02日 41 0


框架

主菜单

场景切换

计分

游戏逻辑

合成动效

音效


包含的内容:

  • 背景、墙、水果、死亡线、UI、音乐

逻辑:

  • 待命水果X轴跟随鼠标落下,待命水果是没有重力的
  • 水果落地有碰撞,带有弹性,相同水果碰撞合成更大的水果
  • 如果抵达死亡线游戏失败,重新加载场景
  • 显示当前分数

【Unity项目实践】合成大西瓜_ios


场景

地板、墙添加方形的碰撞体

水果添加circle碰撞体


添加弹跳效果:

在物体上添加新的material(物理材质只包含两个参数:摩擦力和弹性)

我们将摩擦力调整为0.4, 弹性调整为0.2。


将水果做成预制体:

给不同的水果添加circle collider和rigidbody


游戏逻辑

Start:游戏一开始就执行,也就是游戏物体一出现就运行

Update:每一帧执行


创建变量:

水果预制体数组 GameObject[]

待定水果的位置 Transform

创建一个子物体代表待定水果的位置

待命水果

方法:

在Start中创建水果,写一个创建水果的方法

  1. 随机一个整数整数值,获得对应的数组预制体,并且将其实例化,创建一个临时坐标,降临时坐标等于我们创建的位置
  2. 获得实例化的物体的RigidBody组件的重力
  3. 在Update中获得鼠标位置,将屏幕坐标转换成世界坐标;然后让待命物体的X轴和鼠标X轴一致(原理是设定两个浮点值作为左右边界值)
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
  1. 判断鼠标的状态
GetMouseButton(0)//按住鼠标
GetMouseButtonUp(0)//松开鼠标

按住鼠标的时候物体随鼠标移动

松开鼠标的时候,给其rigidbody的gravity赋值为1

然后延迟0.8秒再调用产生物体的方法

在所有方法之前先判断当前是否有物体在场景中

  1. 水果合成
  1. 新建一个脚本挂载在水果物体上,使用OnCollisionEnter来判断碰撞,如果碰到的collider的标签是我们添加的标签
  2. 合成的时候需要判断:当前物体不是待定物体且碰到的物体的标签也是水果;并且获得物体的id,只渲染一个
  1. 游戏失败逻辑
  1. 如果不是待定物体,碰撞到了死亡线,且不是第一次碰到,那么显示游戏失败。
  1. UI
  1. 添加一个canvas-text,新建一个脚本挂载,将其设置为单例,为Score添加一个属性,然后在水果碰撞的脚本里更新分数;
  1. 添加音效
  1. 添加一个audio source,再挂载一个脚本(单例模式)获取AudioSource类型的组件
  2. 创建一个播放音频的方法,参数是audioclip;audiosource.playoneshot(audioclip)
  3. 在水果上挂载的脚本中,更改分数的同时播放音效playaudio方法
  4. 判断如果碰撞到的物体是地面,那么播放落地的音效

【Unity项目实践】合成大西瓜_ide_02

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

EFTJ6596AiAP