Fire Balls 11——修正游戏的BUG

Stella981
• 阅读 532

版权申明:

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

目标

  • Tower的Cylinder的放大,防止先打到砖块
  • 场景的调色
  • 命中后子弹消失
  • Tank的调整
  • 砖块淡出禁用碰撞体
  • Tower没有上升完毕禁止射击

Tower的Cylinder的放大

  • 把我们的Cylinder放大至合适的大小(比砖块大一些)即可;

场景的调色

  • 首先在我们的场景上找到太阳光(Directional Light)并把颜色参数设置为如下所示: Fire Balls 11——修正游戏的BUG

命中后子弹消失

  • 打开我们的Projectile脚本,找到碰撞发生函数,并添加如下代码

    private void OnCollisionEnter(Collision collision) { if(collision.gameObject.tag == "Tower") { Destroy(gameObject); collision.transform.parent.GetComponent().DropTower(); } if(collision.gameObject.tag == "Arch") { lober.endPos = player.transform.position; lober.enabled = true; player.gameover = true; Destroy(gameObject, 1.5f); } }

Tank的调整

  • 打开我们的Level1预制体找到我们的Tank把Tank拖到Level1的子节点,也就是和平台是同一节点即可 Fire Balls 11——修正游戏的BUG

砖块淡出禁用碰撞体

  • 首先打开我们的方块预制体和圆柱预制体把里面的碰撞体Collider都更改为MeshCollider。

  • 打开我们的Bricks脚本找到setFadeout函数添加如下代码即可:

    internal void setFadeout() { isFadeout = true; GetComponent().enabled = false; }

Tower没有上升完毕禁止射击

  • 打开Tank脚本增加一个Bool变量名为isMovingUp然后在Update函数里编写如下代码

    void Update() { if (gameover) return; if (Input.GetButtonDown("Fire1")) { pressTime = Time.time; } if (isMovingUp) return; if (Input.GetButton("Fire1")&&Time.time - lastFireTime>0.2f) { //每一帧计算当前时间-按下时间之差d float d = Time.time - pressTime; //实例化一个子弹; var transProj = Instantiate(Bullet).transform; float f = d / 2;//最大2秒内有变化,超过2秒使用最高音高系数(1) if (f > 1) { f = 1; } transProj.GetComponent().pitch = 1 + f * 2; //设置子弹的父节点; transProj.SetParent(transform, false); //设置子弹的坐标; transProj.position = ShotPos.position; //给子弹一个力,可以让子弹往前移动; Vector3 v = ShotPos.forward * 20;
    transProj.GetComponent().AddForce(v, ForceMode.Impulse); lastFireTime = Time.time;

    } }

  • 打开我们的Tower脚本编写如下代码即可。

    public class Tower : MonoBehaviour { public int Height; public Color[] Colors = new Color[2]; public GameObject brickPrefab; public List bricks = new List(); public bool isRisenUp = false;//砖块是不是全部从地下钻上来了 public Tank tank; // Start is called before the first frame update void Start() { tank = GameObject.Find("Player").GetComponent(); 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().material.color = Colors[i % 2]; goBrick.transform.Rotate(0, i10, 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.8transform.lossyScale.y) { transform.Translate(0, 5 * Time.deltaTime, 0, Space.Self); yield return null; } isRisenUp = true;
    tank.isMovingUp = false; } // Update is called once per frame }

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Percona XtraDB Cluster 5.7安装配置
博客园(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2F)首页(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fwsl2220
Stella981 Stella981
3年前
CentOS 7 安装 JAVA环境(JDK 1.8)
博客园(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2F)首页(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fstulzq%
Stella981 Stella981
3年前
FFmpeg数据结构AVPacket
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure\_chn/p/10410320.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fleisure_chn%2Fp%2F10410320.html)
Wesley13 Wesley13
3年前
Unity经典游戏教程之:弓之骑士
版权声明:本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号“优梦创客”(微信号:unitymaker)您可以自由转载,但必须加入完整的版权声明!一原始游戏!9pmTgO.png(https://os
Wesley13 Wesley13
3年前
unity探索者之支付宝支付,非第三方插件
版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/8405044.html(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cnblogs.com%2FunityExplorer%2Fp%2F8405044.h
Wesley13 Wesley13
3年前
Oracle 12c RAC 安装文档
博客园(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2F)首页(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fleohaha
Stella981 Stella981
3年前
Redis 开发陷阱及避坑指南!
原文首发于博客园,作者:后青春期的Keats地址:https://www.cnblogs.com/keatsCoder/(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2FkeatsCoder%2F)Linux配置优化
Wesley13 Wesley13
3年前
Unity经典游戏教程之:是男人就下100层
版权声明:本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客"(微信号:unitymaker)您可以自由转载,但必须加入完整的版权声明!是男人就下一百层一、游戏介绍是男人就
Wesley13 Wesley13
3年前
Unity检测一个点是否在三角形区域里边的两种方法
版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.cnblogs.com/baosong/p/9545040.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fbaosong%2Fp%2F9545040.html)