版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号:umaketop
  • 您可以自由转载,但必须加入完整的版权声明

目标

  • 砖块的消失
  • 砖块的淡出效果
  • 砖块的下落

砖块的消失

  • 首先我们先打开我们的Tower脚本,编写如下代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Tower : MonoBehaviour
{
public int Height;
public Color[] Colors = new Color[2];
public GameObject brickPrefab;
public List<GameObject> bricks = new List<GameObject>();
public bool isRisenUp = false;//砖块是不是全部从地下钻上来了
// Start is called before the first frame update
void Start()
{
for(int i = 0; i < Height; i++)
{
GameObject goBrick = Instantiate(brickPrefab);
goBrick.transform.SetParent(transform,false );
goBrick.transform.Translate(0, i, 0,Space.Self);
goBrick.GetComponent<MeshRenderer>().material.color = Colors[i % 2];
goBrick.transform.Rotate(0, i*10, 0,Space.Self);
bricks.Add(goBrick);
}
StartCoroutine(RiseUpFormUnderground());
}
IEnumerator RiseUpFormUnderground()
{
transform.Translate(0, -Height * transform.lossyScale.y, 0, Space.Self);
while (transform.position.y<0.5*transform.lossyScale.y)
{
transform.Translate(0, 5 * Time.deltaTime, 0, Space.Self);
yield return null;
}
isRisenUp = true;
} // Update is called once per frame
void Update()
{
transform.Rotate(0, 45 * Time.deltaTime, 0,Space.Self);
}
public void DropTower()
{ //启动一个协成
StartCoroutine(DestoryAndDrop());
} IEnumerator DestoryAndDrop()
{
//第一步:找到最底下一层砖块,然后销毁
GameObject brick = bricks[0];
bricks.RemoveAt(0);
//第二步:设置砖块进入淡出动画状态 //第三步:让上面的每一层砖块往下落一层 //第四步,销毁砖块
Destroy(brick,2f);
yield return null;
}
}
  • 随后打开我们的Projectile脚本并在我们的OnCollisionEnter函数里添加如下代码:
 private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.tag == "Tower")
{
Destroy(gameObject);
collision.transform.parent.GetComponent<Tower>().DropTower();
}
if(collision.gameObject.tag == "Arch")
{
lober.endPos = player.transform.position; lober.enabled = true; player.gameover = true;
}
}
  • 修改完成后运行我们的游戏就可以看到砖块消失的效果了。

砖块的淡出效果

  • 首先我们先新建一个脚本重命名为Brick并编写如下的代码:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Brick : MonoBehaviour
{
private bool isFadeout = false;
public Vector3 targetScale;//目标缩放大小
public float speed = 0.5f;//淡出的速度
private void Start()
{
targetScale = transform.localScale * 3;
}
internal void setFadeout()
{
isFadeout = true;
}
private void Update()
{
if (isFadeout)//如果砖块正在淡出
{
//1.砖块变大
float t = 1 / speed * Time.deltaTime;
transform.localScale = Vector3.Lerp(transform.localScale, targetScale, t);
//2.砖块颜色变透明
Color c = GetComponent<MeshRenderer>().material.color;
c.a = Mathf.Lerp(c.a, 0, t);
GetComponent<MeshRenderer>().material.color = c;
}
}
}
  • 其次打开我们的Tower脚本找到我们刚刚编写的DestoryAndDrop函数并添加如下代码:
 IEnumerator DestoryAndDrop()
{
//第一步:找到最底下一层砖块,然后销毁
GameObject brick = bricks[0];
bricks.RemoveAt(0);
//第二步:设置砖块进入淡出动画状态
brick.GetComponent<Brick>().setFadeout();
//第三步:让上面的每一层砖块往下落一层 //第四步,销毁砖块
Destroy(brick,2f);
yield return null;
}
  • 最后双击打开我们的砖块的材质把材质的Rendering Mode改为Fade即可。



砖块的下落

  • 依旧是打开我们的Tower脚本找到我们刚刚编写的DestoryAndDrop函数并添加如下代码:
    IEnumerator DestoryAndDrop()
{
//第一步:找到最底下一层砖块,然后销毁
GameObject brick = bricks[0];
bricks.RemoveAt(0);
//第二步:设置砖块进入淡出动画状态
brick.GetComponent<Brick>().setFadeout();
//第三步:让上面的每一层砖块往下落一层
for (int i = 0; i < bricks.Count; i++)
{
Vector3 p = bricks[i].transform.position;
p.y = p.y - 1;
bricks[i].transform.position = p;
}
//第四步,销毁砖块
Destroy(brick,2f);
yield return null;
}

Fire Balls 07——砖块的淡出,消失以及砖塔的下落的更多相关文章

  1. Fire Balls 04——砖塔的创建,动态上升以及旋转

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  2. Fire Balls 08——子弹的消失,当子弹击中自身时不可发射子弹

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  3. Fire Balls 09——修正游戏的BUG

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  4. Fire Balls 05——子弹的命中及后续效果

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  5. Unity经典案例之:Fire Balls 多个圆环以及圆环的变速变向

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  6. Fire Balls 05——坦克和子弹的制作以及炮台发射子弹

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  7. Fire Balls 08——音效的添加

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  8. Fire Balls 10——UI界面的制作

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  9. Fire Balls 11——平台组合,场景的美化

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

随机推荐

  1. php的中文字符

    在使用substr截取字符窜的时候出现乱码的问题 一直任认为字符串是2个字节,直到多次才尝试才总算知道问题所在 php的utf-8字符是每个字符3个字节 而gbk字符是每个字节2个字符 单个字母和符号 ...

  2. EF 拉姆达 linq 帮助类

    (这个类是很早以前在网上找的,忘记出处请原谅.) 一.基本用法 [Route("List")] public ApiResult GetList(int page, int lim ...

  3. superset安装文档

    1 安装python3.6 yum install epel-release -y yum install https://centos7.iuscommunity.org/ius-release.r ...

  4. 有容云:上车 | 听老司机谈Docker安全合规建设

    编者注: 本文根据7月19日DockOne社群分享内容整理而成,分享嘉宾蒋运龙,有容云高级咨询顾问,一个IT的老兵,十年来混迹于存储.三网融合.多屏互动.智能穿戴.第三方支付.Docker等行业:经历 ...

  5. openjdk:8u22-jre-alpine在java开发中的NullPointerException错误解决方案

    问题描述 ** 在SpringBoot项目中使用了Ureport报表组件, 打包发布部署到docker中启动报错 ** java.lang.NullPointerException at sun.aw ...

  6. vue+element搭建后台管理界面(支持table条件搜索)

    代码地址(如果有帮助,请点个Star) vue:https://github.com/wwt729/ElementUIAdmin-master.git springboot后端:https://git ...

  7. Spring 2017 Assignments2

    一.作业要求 原版:http://cs231n.github.io/assignments2017/assignment2/ 翻译:http://www.mooc.ai/course/268/lear ...

  8. temperatureConversion2

    Solution: #方法一:字符串与列表的相互转换和它们的基本函数操作 n = input() if n[0] in {"C","c"}: a= list(n ...

  9. 使用 .NET CORE 创建 项目模板,模板项目,Template

    场景:日常工作中,你可能会碰到需要新建一个全新的解决方案的情况(如公司新起了一个新项目,需要有全新配套的后台程序),如果公司内部基础框架较多.解决方案需要DDD模式等,那么从新起项目到各种依赖引用到能 ...

  10. Android 框架揭秘 --读书笔记

    Android 框架揭秘 Insied the Android Framework