👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 收录于专栏:unityUI专题篇
⭐通用API实现抽象行为封装【五】⭐
文章目录
- ⭐通用API实现抽象行为封装【五】⭐
- 🎶前言
- 🎶(==A==)UML
- 🎶(==B==)需求分析
- 🎶(==C==)行为实现——炮台的自动检测并攻击
- 🎶(==D==)行为实现——敌军坦克的移动路线和检测攻击
- 总结:
🎶前言
🅰️
🎶(A)UML
🎶(B)需求分析
🎶(C)行为实现——炮台的自动检测并攻击
😶🌫️:步骤实现
1.炮台的行为逻辑封装:旋转,触发检测,发射炮弹及特效
2.检测玩家后自动瞄准攻击
3.玩家扣血,更新血条,触发保护罩特效及死亡
——————————————
涉及到四个脚本
炮台封装
using System.Collections; using System.Collections.Generic; using UnityEngine; //------------------------------------- //————————————————————————————————————— //___________项目: ______________ //___________功能: 炮台的行为逻辑实现 //___________创建者:秩沅_______________ //_____________________________________ //------------------------------------- public class battery : TankFather { public AudioSource shootMusic; //发射音效 public GameObject shootball; //发射的子弹类型 public float shootSpeed = 1000f; //子弹的速度 public Transform shootTransform; //发射的组件信息 public bool shootSwitch = false; //射击检测参数 public Transform player; //闯入者 private float endTime = 8f; //子弹发射间隔的时间 private void Start() { //属性初始化赋值 Head = transform.GetChild(0); maxBlood = 500; nowBlood = 500; attack = 20; HeadSpeed = 50; //射击音效关闭 shootMusic.enabled = false; } private void Update() { if (shootSwitch == false) //不停的旋转 { Head.transform.Rotate(Vector3.up * HeadSpeed * Time.deltaTime); } else { Head.transform.LookAt(player); //倒计时发射子弹 endTime = Mathf.MoveTowards(endTime, 0, 0.1f); if(endTime Fire(); endTime = 3f; } } } //玩家进入范围内就开始射击 private void OnTriggerEnter(Collider other) { if(other.tag == "Player") { shootSwitch = true; player = other.transform; } } //受伤检测 private void OnTriggerStay(Collider other) { float off = Vector3.Distance(other.transform.position, transform.position); if (other.gameObject.tag == "bullet" && off
- 总结: