👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 收录于专栏:就业宝典
⭐🅰️推荐专栏⭐
⭐-软件设计师高频考点大全⭐
文章目录
- ⭐前言⭐
- (==4==)BOSS系统
- 范围检测和血条制作</font>
- 等级限制</font>
- 场景加载</font>
- Boss动画</font>
- ⭐🅰️⭐
⭐前言⭐
(4)BOSS系统
范围检测和血条制作
等级限制
//获取视图对应的代理
PlayerProxy bm = Facade.RetrieveProxy(PlayerProxy.NAME) as PlayerProxy;
bm.LevUp(); //数据升级的方法
stateView.UpdateView(bm.Data as PlayerDataObj); //升级数据
stateView.expSlider.value = 0;
PlayerContorller.GetInstance().exp = 0; //经验条归位
if(stateView.levelText.text == "3")
{
PlayerContorller.GetInstance().key = true; //可以开启副本(3级才可以打副本)
}
场景加载
- 场景加载
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
//-------------------------------
//-------功能: Boss房间钥匙逻辑
//-------创建者: -------
//------------------------------
public class Key : MonoBehaviour
{
private void OnTriggerStay(Collider other)
{
if (other.gameObject .tag == "Player"&& Input.GetKeyDown(KeyCode.F))
{
SceneManager.LoadScene(1);
}
}
}
Boss动画
- boss攻击
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SocialPlatforms;
using UnityEngine.UI;
//-------------------------------
//-------功能: boss控制器
//-------创建者: -------
//------------------------------
public class BossController : MonoBehaviour
{
public GameObject player; //对标玩家
public Animator animator; //对标动画机
public float hp = 300f; //血量
public Image hpSlider; //血条
private int attack = 30; //敌人的攻击力
public float CD_skill; //技能冷却时间
private void Start()
{
animator = GetComponent<Animator>();
hpSlider = transform.GetChild(0).GetChild(0).GetComponent<Image>();
}
private void Update()
{
CD_skill += Time.deltaTime; //CD一直在累加
}
//碰撞检测
private void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "Player") //检测到如果是玩家的标签
{
Debug.Log("接触到玩家");
if (CD_skill > 3.5f) //攻击动画的冷却时间
{
//触发攻击事件
animator.SetBool("attack", true); //攻击动画激活
EventCenter.GetInstance().EventTrigger(PureNotification.PLAYER_INJURY); //激活玩家受伤事件
//延迟播放动画s
GameFacade.Instance.SendNotification(PureNotification.HURT_UP, attack); //发送玩家受伤扣血的通知
StartCoroutine("delay", collision.gameObject.transform );
CD_skill = 0; //冷却时间归0
}
}
}
IEnumerator delay(Transform transform) //协程迭代器的定义
{
//暂停几秒(协程挂起)
yield return new WaitForSeconds(0.5f);
//暂停两秒后再显示文字
//DOtween
transform.DOMoveZ(transform.localPosition.z - 3, 1); //被撞击Z轴后移
}
//退出 碰撞检测
private void OnCollisionExit(Collision collision)
{
//
if (collision.gameObject.tag == "Player") //检测到如果是玩家的标签
{
Debug.Log("玩家退出");
animator.SetBool("attack", false);
PlayerContorller.GetInstance().animator.SetBool("hurt", false);
}
}
//范围触发检测
private void OnTriggerStay(Collider other)
{
if (other.tag == "Player") //检测到如果是玩家的标签
{
//让怪物看向玩家
transform.LookAt(other.gameObject.transform.position);
animator.SetBool("walk", true);
//并且向其移动
transform.Translate(Vector3.forward * 1 * Time.deltaTime);
}
}
}
⭐🅰️⭐
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、