Fire Balls 05——子弹的命中及后续效果
版权申明:
- 本文原创首发于以下网站:
- 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
- 优梦创客的官方博客:https://91make.top
- 优梦创客的游戏讲堂:https://91make.ke.qq.com
- 『优梦创客』的微信公众号:umaketop
- 您可以自由转载,但必须加入完整的版权声明
目标

- 预制体Tag的更改
- 子弹脚本的编写
- 子弹碰到圆环后反弹
预制体Tag的更改
- 首先我们先打开我们的砖块(任意)预制体然后在上方找到Tag选项

- 单击打开后点击Add Tag,点击+号,增加两个如下Tag

- 由于我们的圆环是动态创建的所以我们需要在脚本中添加更改Tag的代码,首先我们先Disc脚本找到对应的函数并添加第23行代码如下所示:
private void CreateArch(int radius, int deg, int rot)
{
// 创建圆环
ProBuilderMesh pbMesh = ShapeGenerator.GenerateArch(PivotLocation.FirstVertex,
deg, radius, 0.5f, 1, 20, true, true, true, true, true);
pbMesh.GetComponent<MeshRenderer>().material = mat;
// 设置圆环的Tag
pbMesh.gameObject.tag = "Arch";
// 给圆环添加碰撞器
pbMesh.gameObject.AddComponent<MeshCollider>();
// 使圆环平躺
pbMesh.transform.Rotate(-90, 0, 0);
// 设置圆环的父节点,使其绕着父节点公转(父节点默认创建在原点)
Transform xRig = new GameObject("xRig").transform;
pbMesh.transform.SetParent(xRig, false);
// 设置圆环初始在圆盘的旋转角度
xRig.Rotate(0, rot, 0);
Transform yRig = new GameObject("yRig").transform;
xRig.SetParent(yRig, false);
yRig.SetParent(this.transform, false);
}
}
- 然后保存并关闭我们的脚本即可。
- 由于我们的砖块是有预制体的,所以我们只需打开砖块的预制体然后把Tag改为Brick即可。
子弹脚本的编写
- 我们先新建一个脚本重命名为Porjectile并打开编写如下代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 子弹脚本
public class Projectile : MonoBehaviour
{
private void Start()
{
}
// 把子弹跟其他物体碰撞的脚本写在这里
private void OnCollisionEnter(Collision collision)
{
// 子弹跟谁发生了碰撞?
if (collision.gameObject.tag == "Arch")
{
print("你碰到了圆环!");
}
else if (collision.gameObject.tag == "Brick")
{
print("你碰到了砖块!");
}
}
}
- 并把脚本拖给子弹即可,由于子弹有可能会碰到平台,我们可以选中平台把平台的Mesh Colider组件给移除掉。注意,子弹上得添加Rigidbody和Sphere Colider组件,否则子弹不会产生碰撞效果。
子弹碰到圆环后反弹
- 首先我们需要联系优梦创客的助教Alice老师她为我们提供完成本节课任务所需要的插件,然后把插件导入至我们的Unity,并打开我们的Projectile预制体并添加Lober脚本,并把左上角的√给取消掉,如下所示

然后重新打开我们的Projectile脚本并把代码修改为如下所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 子弹脚本
public class Projectile : MonoBehaviour
{
private Lober lober;
private Transform ply;
private void Start()
{
lober = GetComponent<Lober>();
ply = GameObject.FindWithTag("Player").transform;
}
// 把子弹跟其他物体碰撞的脚本写在这里
private void OnCollisionEnter(Collision collision)
{
// 子弹跟谁发生了碰撞?
if (collision.gameObject.tag == "Arch")
{
print("你碰到了圆环!");
lober.endPos = ply.position;
lober.enabled = true;
}
else if (collision.gameObject.tag == "Brick")
{
print("你碰到了砖块!");
}
}
}
Fire Balls 05——子弹的命中及后续效果的更多相关文章
- Fire Balls 05——坦克和子弹的制作以及炮台发射子弹
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 08——子弹的消失,当子弹击中自身时不可发射子弹
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 09——修正游戏的BUG
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 08——音效的添加
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Unity经典案例之:Fire Balls 多个圆环以及圆环的变速变向
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 04——砖塔的创建,动态上升以及旋转
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 07——砖块的淡出,消失以及砖塔的下落
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 10——UI界面的制作
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- Fire Balls 11——平台组合,场景的美化
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
随机推荐
- 更简洁的log4j日志输出
参考博客:https://blog.csdn.net/guoquanyou/article/details/5689652 只输出到文本,不输出到控制台 log4j.rootLogger=debug, ...
- Jenkins-slave分布式环境构建与并行WebUi自动化测试项目
前言 之前搭建过selenium grid的分布式环境,今天我们再来搭建一次Jenkins的分布式环境:jenkins-slave Jenkins的Master-Slave分布式架构主要是为了解决Je ...
- 机器学习经典分类算法 —— k-近邻算法(附python实现代码及数据集)
目录 工作原理 python实现 算法实战 约会对象好感度预测 故事背景 准备数据:从文本文件中解析数据 分析数据:使用Matplotlib创建散点图 准备数据:归一化数值 测试算法:作为完整程序验证 ...
- httpclient信任所有证书解决SSLException:Unrecognized SSL message,plaintext connection
在使用 HttpClient 工具调用第三方 Http 接口时报错 javax.net.ssl.SSLException:Unrecognized SSL message,plaintext conn ...
- react项目建立导入包问题总结
1.react和react-dom包 使用react开发网页的话,我们难免会下载两个包,一个是react,一个是react-dom,其中react是react的核心代码.react的核心思想是虚拟Do ...
- canal同步MySQL数据到ES6.X
背景: 最近一段时间公司做一个技术架构的更改,由于之前使用的solr和目前的业务不太匹配,具体原因不多说啦.所以要把数据放到Elasticsearch中进行快速的搜索,这是便产生了一个数据迁移的需求, ...
- Golang Context 包详解
Golang Context 包详解 0. 引言 在 Go 语言编写的服务器程序中,服务器通常要为每个 HTTP 请求创建一个 goroutine 以并发地处理业务.同时,这个 goroutine 也 ...
- 基于python的Elasticsearch索引的建立和数据的上传
这是我的第一篇博客,还请大家多多指点 Thanks ♪(・ω・)ノ 今天我想讲一讲关于Elasticsearch的索引建立,当然提前是你已经安装部署好Elasticsearch. ok ...
- 疯子的算法总结(二) STL Ⅰ 算法 ( algorithm )
写在前面: 为了能够使后续的代码具有高效简洁的特点,在这里讲一下STL,就不用自己写堆,写队列,但是做为ACMer不用学的很全面,我认为够用就好,我只写我用的比较多的. 什么是STL(STl内容): ...
- 详解 git 忽略文件 删除远端仓库的文件
要解决的问题 忽略指定类型的文件 或 某个指定文件(夹) 将已经push到github的文件删除, 但本地的文件不删除 (写忽略规则之前就把这个文件夹push了 T_T ) 将想要忽略掉的文件的相关记 ...