写在最前面:Jay 是我花了五天左右时间开发的同名游戏,基础机制借鉴了涂鸦跳跃,具体的参考视频可以点击以下链接

用周杰伦的第一张专辑Jay做了个游戏(祝杰伦118生日快乐)_单机游戏热门视频

这篇日志将记录游戏中出现的各种道具的效果该如何实现。

(四) 受伤并下坠

该效果出现在关卡 “印第安老斑鸠” 中。碰到老斑鸠后会将父物体的碰撞盒消除并且获得一个向上的初速度,最后自由落体掉出视野,游戏失败。在 OnTriggerEnter2D 中的代码如下:

    Parent.GetComponent<Collider2D>().enabled = false;Vector2 Velocity = Parent.GetComponent<Rigidbody2D>().velocity;Velocity.y = 1f;Parent.GetComponent<Rigidbody2D>().velocity = Velocity;

(五) 物体跟随

1)  该效果出现在关卡 “星晴” 中。星星被人物触碰之后,会跟随人物一段时间然后脱落。如果同时有四颗星星跟随人物,便可通关。这里选择了使用队列来储存正在跟随人物的星星,因为其先 FIFO 的特性很符合这里的需求。首先在 OnTriggerEnter2D 中实现星星的存放,代码如下:

    if (StarNum < 4){gameObject.GetComponent<AudioSource>().clip = AudioClips[2];gameObject.GetComponent<AudioSource>().Play();StarNum++; collision.gameObject.GetComponent<BoxCollider2D>().enabled = false; //取消星星的碰撞盒Stars.Enqueue(collision.transform); //入队Invoke("StarFall",5f); //星星坠落}

2)  在新函数 StarFall 中实现星星的脱离。这里的逻辑很简单,将星星原本的 gravityScale 设置为 0,脱离后设置为 0.5,这样它就会自动下落。

    void StarFall(){StarNum--;Transform FalledStar = Stars.Dequeue(); //出队FalledStar.GetComponent<Rigidbody2D>().gravityScale = 0.5f; }

3)  在 FixedUpdate 中,实现星星的跟随,因为一直调不出我满意的效果,在这里就不过多解析了,可以去参考视频中观看该部分的演示。

    //Star FollowingTransform[] StarsArray = Stars.ToArray(); //把队列转化为数组if (StarsArray.Length > 0){Vector3 dir = StarsArray[0].position - transform.position;StarsArray[0].position = transform.position + dir.normalized * Radius;if (StarsArray.Length > 1){for (int i = 1; i < StarsArray.Length; i++){Vector3 dir2 = StarsArray[i - 1].position - transform.position;Vector3 tarPos = StarsArray[i - 1].position +  dir.normalized * Radius;StarsArray[i].position = Vector3.MoveTowards(StarsArray[i].position, tarPos, 10f * Time.deltaTime);}}StarsArray[0].RotateAround(transform.position, Vector3.back, 180 * Time.deltaTime);}

(六)其他效果

1)  开发日志(二)中提到过分数暂停,这里进行补充。在 OnTriggerEnter2D 中更改 isPause 为真,然后调用 Invoke 方法 8 秒后更改 isPause 为假。

2)  触碰胜利道具时将 isWon 和 Parent.GetComponent<Player>().End 改为 true,用于在别的脚本中触发一系列效果。

【Unity】Jay 开发日志(四)——道具效果的实现(下)相关推荐

  1. Unity虚拟现实开发——鼠标开关窗户效果多种实现方案

    在使用Unity进行VR开发中遇到鼠标拖动开关窗户的功能需求,我想到三种解决方案: 一:窗户模型必须经过建模软件的处理,使其坐标轴Y轴在窗子边沿:使用欧拉角改变鼠标拖动中的窗户旋转角度(eulerAn ...

  2. unity游戏开发日志(一)将mmd模型导入unity,并解决材质丢失的问题

    开发目标 从零开始开发一款音乐手游,类似钢琴块的玩法加QQ炫舞画面,实现一部想玩就可以随时玩的简单音游.该项目着重练手,以及技术交流,欢迎大家指导. 开发计划 计划在两个月内完成游戏,该游戏完成后将进 ...

  3. 项目实训----Unity多人游戏开发----第四篇

    游戏制作之人物移动(二) 综述 主体 内容2:人物移动控制方式--鼠标控制 总结 综述 上次我们主要进行讲解的是游戏开发过程遇到的一些问题,以及想法,主要讲述了如何使用键盘进行控制人物移动.主要是通过 ...

  4. 【Unity】开发日志1——画笔 The Printer

    我每天都想去学习一些东西,但是每次做一半就坚持不下去,一方面的原因是:我的的确确遇到很多困难:另一方面的确是无从下手,不知道如何去学习: 我现在就是这样不断的摸索摸索,所以就写下我摸索的过程.一方面希 ...

  5. Android Studio开发第四篇版本管理Git(下)

    前面一片介绍了在as下如何关联远程仓库,这篇就介绍在开发过程中怎么应用. 提交+Push 如果本地开发代码有改动了或者你觉得某功能做完了,你打算把改动代码提交到远程仓库,这个时候很简单, 还是在工具栏 ...

  6. Unity编辑器开发(五):实战、开发一个AB包编辑器工具

    前言 在我们上一篇(Unity编辑器开发(四):实战.开发一个AB包编辑器工具)的结尾,我们拥有了如下图中那样的一个编辑器窗口: 接下来我们来完成最后部分,也就是包括创建AB包,清理AB包,删除AB包 ...

  7. Unity 之 实现老虎机滚动抽奖效果

    Unity 之 实现老虎机滚动抽奖效果 直接看下效果图吧: 制作思路: 设计四张图片,五个点,每个图片同时向下一个点移动,到最后一个就回到0号点,以此循环. 场景搭建: 创建Image命名为Bg作为电 ...

  8. Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果

    Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,<明 ...

  9. ​Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果

    ​Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,< ...

  10. Android studio中NDK开发(四)——使用addr2line分析Crash日志 backtrace

    文章目录 一.前言 二.分析 1.先提取backtrace部分 2.提取对应so库的信息 3.提取错误地址 三.使用addr2line对地址进行转换 1.addr2line工具的路径放在 2.Term ...

最新文章

  1. ((sizeof(n)+sizeof(int)-1)~(sizeof(int)-1))
  2. nagios安装与配置详解1
  3. javascript一些基础用法
  4. java安全编码指南之:文件IO操作
  5. vue从入门到精通之进阶篇(四)模块化工具 webpack
  6. phpFpm加载php,php-fpm添加service服务的例子
  7. redis---队列的操作
  8. 运用hanlp 通过 python 结合jpype 导出依存句法可视化
  9. VirtualBox安装MAC虚拟机,屏幕分辨率小,扩大的办法
  10. oracle asm结构,深入了解Oracle ASM
  11. hp服务器虚拟网卡,HP服务器升级网卡固件、驱动来解决网卡bug的操作办法
  12. 二、Spring AOP 切面的定义
  13. Python3-网页爬取-批量爬取贴吧页面数据
  14. IGRP原理及配置案例
  15. HTML第6章上机练习3(制作京东快报页面)
  16. 图片的分辨率大于设备分辨率或者小于设备的分辨率的显示问题
  17. CheckListBox的一些用法!
  18. 中台干货!百度/小米/滴滴/京东,中台架构实践大比拼!
  19. 浏览器支持字体大小情况 以及 Chrome设置小于12px的字体的处理方案
  20. input输入框type设置为number,maxlength无效

热门文章

  1. 分布式系统时钟同步方案
  2. 007-aven-assembly-plugin和maven-jar-plugin打包,java启动命令
  3. r语言数据变量分段_R语言之数据汇总
  4. Java模拟登录强智教务系统分析思路
  5. 利用html2canvas和vue-qr生成带头像二维码的分享海报(二)
  6. 【强化学习】实现Atari游戏的自动化学习(仅供参考)
  7. python读取文本某一行内容
  8. Day621.Spring Test 常见错误 -Spring编程常见错误
  9. sendcloud php,Sendcloud的x_smtpapi具体如何定义?
  10. 如何解决Word只能用安全模式打开