项目展示

Github项目地址:Apple Picker

涉及知识

  • 正投视图
  • 3D场景内树与苹果的图层
  • 记录最高分到本地

准备工作

模型制作:

  1. 基本模型创建

    • 树叶:sphere 拉伸为椭圆形,绿色材质球
    • 树干:cylinde 修改为合适尺寸,棕色材质球
    • 苹果:sphere 附加深红金属光泽球
    • 篮筐:cube 修改为合适尺寸,黄色材质球
  2. 位置、层级关系
    • 调整树叶树干的位置搭配,呈现简单树木形态
    • 另设的空物体AppleTree包含着树叶和树干
  3. 标签、图层
    • 新建标签Apple标记苹果物体
    • 新建图层 AppleTree、Apple和Basket,后在Edit->Project Setting->Physics内取消Apple与AppleTree图层的碰撞。后修正对应物体图层
  4. 相机及预制体
    • 调整主摄像机为正投影(Orthographic),移动到合适位置
    • 创建苹果的预制体

游戏逻辑

  • 苹果树:

    • 每帧都以一定的速度移动,当碰到左右边界则转向,且在左右移动过程中有概率改变运动方向
    • 每一定时间间隔落下一个苹果
  • 苹果:
    • 从树叶位置实例化并落下(本例采用rigidbody重力)
    • 与篮筐产生碰撞即被销毁
    • 若篮筐未与其碰撞,则当苹果下落到一定距离就自动销毁
  • 篮筐:
    • 开局有3个篮筐,且均实例化出来
    • 篮筐跟随鼠标限制在界面的x轴方向移动
    • 篮筐用于接住苹果,与苹果碰撞后销毁苹果
    • 当漏接苹果(也就是当苹果下降到自行销毁的底线时),罗筐数减少(相当于玩家的生命值)
  • 机制:
    • 开局,苹果树左右移动,生成苹果下落
    • 玩家操作鼠标使篮筐左右移动
    • 接到苹果时得分增加,超过历史分值就刷新记录
    • 当没接到苹果时,篮筐数减少(生命值减少),且场景内还在下落中的苹果消失
    • 当3个篮筐都没了,游戏结束,几秒后自动重新开局

代码相关

  • AppleTree.cs:绑定于苹果树AppleTree
  • Apple.cs:绑定于苹果Apple
  • Basket.cs:绑定于篮筐Basket
  • ApplePicker.cs:绑定于主摄像机;BasketPrefab 挂载Basket,EndUI 挂载Canvas->End
  • HighScore.cs:绑定于 Canvas->HighScore

问题探讨

苹果树移动时概率转向问题:

  • 问题分析:在AppleTree.cs内,原计划实现每秒转向概率为chanceToChangeDirecyions=0.02(如下原版代码),但是发现,在FixedUpdate()内,每秒执行50次,也就会导致AppleTree平均每秒改变一次方向:(设概率为t) 50 x (t/1) = 1 ,因此需要修改。
  • 解决方案:对随机数Random.value进行修改,即 Random.value/Time.deltaTime,此时每秒转向概率为: 50 x (t / (1/0.02)) = 50 x 0.02(t/1) = 0.02 ,至此解决问题
  • 其他:但试验下来0.02概率过低,我已调为0.4,且速度为5
private void FixedUpdate()
{/*-----原版-----*///随机改变运动方向,概率为 chanceToChangeDirecyionsif ((Random.value) < chanceToChangeDirecyions)speed *= -1;/*-----修正版-----*/if ((Random.value / Time.deltaTime) < chanceToChangeDirecyions)speed *= -1;
}

苹果下落被销毁就不再生成问题:

  • 问题分析:当第二个苹果还未实例化,第一个实例化的苹果就因下降越线被销毁或者被篮筐接住销毁,此刻场景内就再无Apple预制体,也就是说,AppleTree脚本 就失去对象applePrefab,无法再实例化产生苹果
  • 解决方案:围绕保证场景内任意时刻存在一个applePrefab
    • 调高树的高度(本例方案)
    • 缩短实例化苹果的间隔
    • 先隐藏再延时销毁苹果(理论可行,但感觉大材小用)

参考

  • 《游戏设计、原型于开发》 - Jeremy Gibson
  • unity如何调用另一个脚本中的变量
  • Unity5.x的GUIText被UI Text所取代

转载于:https://www.cnblogs.com/SouthBegonia/p/10988024.html

Unity项目 - 捡苹果 Apple Picker相关推荐

  1. 元宇宙大比拼:苹果Apple, Facebook,微软,英伟达,iwemeta

    元宇宙大比拼:苹果Apple, Facebook,微软,英伟达,iwemeta  哪个才是云宇宙的大Boss? 壹.我们不用"元宇宙"这个词!苹果CEO库克:我们称其为AR 不要讲 ...

  2. Unity:Firebase接入Apple登录

    Unity:Firebase接入Apple登录 开启Firebase的登录方式 设置Apple的后台信息 从Assets Store下载 Singn In With Apple Xcode设置 添加A ...

  3. 智能手机的发展未来:2017 苹果Apple 10周年秋季发布会 解析

    前言 在刚过去的时间里(北京时间 9月13日 0.00),2017年 苹果Apple秋季发布会 在美苹果新总部 Apple Park 的乔布斯剧院(Steve Jobs Theater)内 如期举行 ...

  4. Unity实现类似于苹果视频播放器视频播放进度条及声音进度条拖拽功能

    Unity实现类似于苹果视频播放器视频播放进度条及声音进度条拖拽功能 前言 我在之前的博客里介绍过关于VideoPlayer的简单使用流程,之前一直想研究下videoPlayer中的使用进度条控制视频 ...

  5. 苹果手机没声音了显示耳机模式_降噪耳机哪家强?苹果Apple,1MORE,OPPO对决(兼聊索尼、Bose)...

    主动降噪耳机哪家强?苹果Apple,1MORE,OPPO正面对决(另有索尼.Bose选购推荐) 嗨,大家好!我是Neo! 说到主动降噪耳机,最近几年可以说即非常受欢迎,但选择也不多,传统的厂商主要就是 ...

  6. Spring Cloud 架构设计之苹果Apple账户注销 Revoke tokens auth/revoke

    Spring Cloud 架构设计之苹果Apple账户注销 Revoke tokens auth/revoke 前言 近期,本人在开发一款互联网产品,项目地址https://github.com/yj ...

  7. 苹果APPLE最新MI芯片笔记本安装第三方内核扩展

    苹果APPLE最新MI芯片笔记本安装第三方授信内核扩展 苹果MI芯片默认不支持适配第三方签名内核扩展,在已关闭SIP情况下.仍需要调整macOS 11系统安全策略: 解决方案: 进入恢复模式 (重启系 ...

  8. 苹果Apple Music正式登陆索尼PS5

    10月28日消息,据国外媒体报道,昨晚索尼正式宣布,苹果Apple Music上架PS5平台,PS5也是首款支持 Apple Music 的主机.订阅这项服务的玩家将可在PS5上聆听9000万首歌曲. ...

  9. 2018年智能手表出货量曝光 苹果Apple Watch占据半壁江山

    [TechWeb]近日研究公司Strategy Analytics发布了2018年全年智能手表全球出货量数据,数据显示苹果Apple Watch已经成为了智能手表领域的绝对领导者,其在2018 Q4占 ...

最新文章

  1. mysql5.7 高可用_基于MySQL 5.7多源复制及Keepalived搭建三节点高可用架构
  2. python教程哪个版本好-终于清楚python入门最好的教程
  3. C语言中的static 详细分析 2014-10-11 15:15 143人阅读 评论(0) 收藏...
  4. 6-PSCI Power Domain Tree Structure
  5. php 获取时间段 今天昨天本周上周本月上月本季度本年去年
  6. 视频操作_02视频追踪:meanshift算法+Camshift算法
  7. android layout.inflater,Android - LayoutInflater
  8. 更好的使用Java集合(三)
  9. win7hosts文件位置
  10. 索佳电子水准数据传输软件_安徽铜陵磁致伸缩式静力水准仪公司
  11. 禅道安装与常见问题!!
  12. vue开发环境搭建(WebStorm)
  13. 无觅相关文章插件主页新版推出
  14. linux希捷移动硬盘驱动,如果无法读取Seagate移动硬盘驱动器,该怎么办?
  15. vue 调用 js 获取的今天日期、本周、本月、本年起始和结束日期
  16. 苹果手机直播怎么投屏 苹果手机投影电脑屏幕
  17. Laravel 5.5 注册登录
  18. LeNet-5网络结构详解
  19. 重磅:第十二届中国西部国际资本论坛盛大举办,分布式存储行业备受瞩目!
  20. c语言中输入scanf与getchar的啃爹之处

热门文章

  1. 模式识别研究生:三维点云从零开始学习
  2. 按规定顺序输出26个字母
  3. 身份证号验证(正则升级版)
  4. 运维工程师应该具备的技能(转载)
  5. 我不相信长夜将至,因为火把就在自己手中。
  6. iOS混合开发之uni-app本地打包集成到iOS原生项目
  7. html怎么设置文字段落,第3章 用HTML设置文字与段落.ppt
  8. echart旭日图_echarts之用饼图制作带labelline的旭日图(一)
  9. iOS应用程序的辅助功能:语音识别
  10. 关于程序员的职业规划分析