美文网首页
Unity-3D捕鱼达人小游戏开发 —— 炮台子弹发射

Unity-3D捕鱼达人小游戏开发 —— 炮台子弹发射

作者: 一世长安乱 | 来源:发表于2018-04-10 16:42 被阅读0次

    为子弹创建出生地


    这里写图片描述

    在点击按钮的时候一样会射出子弹,使用

    EventSystem.current.IsPointerOverGameObject() == false;
    

    来解决,但是现在一个子弹都射不出来,需要将背景的属性修改,是否是射线检测的目标


    这里写图片描述

    给子弹添加属性脚本文件,添加碰撞体
    BulletAttribute.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class BulletAttribute : MonoBehaviour {
        // 子弹速度
        public float speed;
        // 子弹伤害
        public int damage;
        // 子弹爆炸后网的形状
        public GameObject webPrefab;
    
        private void OnTriggerEnter2D(Collider2D collision)
        {
            if (collision.tag == "Border"){
                Destroy(gameObject);
            }
            if (collision.tag == "Fish"){
                // 碰到鱼的时候就实例化网
                GameObject web = Instantiate(webPrefab);
    
                web.transform.SetParent(gameObject.transform.parent, false);
                web.transform.position = gameObject.transform.position;
    
                // 获取到网的属性,给网附加伤害
                web.GetComponent<WebAttribute>().damage = damage;
    
                // 销毁鱼
                Destroy(gameObject);
            }
        }
    }
    
    这里写图片描述
    这里写图片描述

    GameController.cs关于开火的方法

    void Fire(){
            // 当前使用的子弹
            GameObject[] usingBullets = bulletObjects1;
            // 发射子弹中的哪一种
            int bulletIndex;
            // 如果按下鼠标左键,并且判断是否和UI相撞,解决UI穿透
            if (Input.GetMouseButtonDown(0) && EventSystem.current.IsPointerOverGameObject() == false){
                // 加四次钱换一次炮台
                switch(costIndex / 4)
                {
                    case 0:
                        usingBullets = bulletObjects1;
                        break;
                    case 1:
                        usingBullets = bulletObjects2;
                        break;
                    case 2:
                        usingBullets = bulletObjects3;
                        break;
                    case 3:
                        usingBullets = bulletObjects4;
                        break;
                    case 4:
                        usingBullets = bulletObjects5;
                        break;
                }
                // 如果等级大于20级,那资源就不够,数组就会越界,
                bulletIndex = (lv % 10 >= 9) ? 9 : lv % 10;
    
                // 实例化
                GameObject bullet = Instantiate (usingBullets [bulletIndex]);
                // 设置父体,false:不保留世界坐标
                bullet.transform.SetParent (bulletsHolder, false);
                // 调节bullet的localPosition和localRotation
                bullet.transform.position = 
                    gunObjects [costIndex / 4].transform.Find ("FirePosition").transform.position;
                bullet.transform.rotation = 
                    gunObjects [costIndex / 4].transform.Find ("FirePosition").transform.rotation;
    
                // 给子弹添加伤害
                bullet.GetComponent<BulletAttribute>().damage = shootCosts[costIndex];
    
    
                // 给子弹加上直线移动脚本
                // 调整子弹方向
                bullet.AddComponent<Ef_AutoMove>().dir = Vector3.up;
                // 调整子弹速度
                bullet.GetComponent<Ef_AutoMove>().speed = bullet.GetComponent<BulletAttribute>().speed;
    }
    

    子弹爆炸后会有渔网,需要给渔网的预制件添加属性脚本文件,还要添加碰撞体
    WebAttribute.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class WebAttribute : MonoBehaviour
    {
        // 消失时间
        public float disapperTime;
        // 网的伤害
        public int damage;
    
        private void Start()
        {
            // 时间一到就销毁自己
            Destroy(gameObject, disapperTime);
        }
    
        private void OnTriggerEnter2D(Collider2D collision)
        {
            if (collision.tag == "Fish")
            {
                // 给鱼发消息让鱼受伤,传入伤害值
                collision.SendMessage("ReceiveDamage", dama
                                      ge);
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Unity-3D捕鱼达人小游戏开发 —— 炮台子弹发射

          本文链接:https://www.haomeiwen.com/subject/pkenhftx.html