当前位置: 首页 > news >正文

学习游戏制作记录(爆炸敌人的制作)

1.制作爆炸的光球

创建Expolsive_Controller脚本:

 private Animator anim;//动画组件
private CharactorState myStats;//产生光球的实体状态
private float growSpeed = 10;//球的变大速度
private float maxSize = 6;//球的最大尺寸
private float ExplosiveRadius;//爆炸半径

 private bool canGrow=true;//是否可以变大

 private void Update()
{
if(canGrow)
{
transform.localScale = Vector2.Lerp(transform.localScale, new Vector2(maxSize, maxSize), growSpeed * Time.deltaTime);//变大
}

     if(maxSize-transform.localScale.x < .5f )
{
canGrow = false;
anim.SetTrigger("Explode");//达到一定程度执行爆炸的动画
}
}
public void SetupExpolsve(CharactorState _mystats,float _growSpeed,float _maxSize,float _radius)//设置光球的参数
{
anim = GetComponent<Animator>();

     myStats = _mystats;
growSpeed = _growSpeed;
maxSize = _maxSize;
ExplosiveRadius = _radius;
}

 public void AnimationExplodeEvent()//爆炸伤害函数,在光球爆炸的时候调用该函数
{
Collider2D[] collider2Ds = Physics2D.OverlapCircleAll(transform.position, ExplosiveRadius);

     foreach (var hit in collider2Ds)
{
if (hit.GetComponent<CharactorState>() != null)
{
hit.GetComponent<Entity>().SetupKnocbackDir(transform);
myStats.DoDamage(hit.GetComponent<CharactorState>());

}
}
}

public void SelfDestroy()=>Destroy(gameObject);//在光球消失的动画时销毁函数

2.制作爆炸敌人

依旧参考骷髅敌人的状态机

修改Enemy_Shady脚本:

    [Header("Shady Spesifics")]
[SerializeField] public float BattleStateMoveSpeed;

    [SerializeField] private GameObject explosivePrefab;
[SerializeField] private float growSpeed;
[SerializeField] private float maxSize;

        idleState = new ShadyIdleState(enemyStateMachine, this, "Idle", this);
moveState = new ShadyMoveState(enemyStateMachine, this, "Move", this);
battleState = new ShadyBattleState(enemyStateMachine, this, "MoveFast", this);//这里用快速移动代替战斗状态
stunedState = new ShadyStunnedState(enemyStateMachine, this, "Stunned", this);
deadState = new ShadyDeadState(enemyStateMachine, this, "Dead", this);

    public override void AnimationSpecialAttackTrigger()//在敌人执行爆炸动画即光球出现时调用该函数
{
GameObject newExplosive = Instantiate(explosivePrefab, attackCheck.position, Quaternion.identity);//产生光球

        newExplosive.GetComponent<Expolsive_Controller>().SetupExpolsve(state, growSpeed, maxSize, attackCheckRadius);


        cd.enabled = false;
rb.gravityScale = 0;
}

    public void SelfDestroy() => Destroy(gameObject);//在敌人执行消失动画的最后一帧调用自毁函数

修改ShadyBattleState脚本:

    public override void Update()
{
base.Update();

        if (enemy.isPlayerDetected())
{
stateTimer = enemy.BattleTime;
if (enemy.isPlayerDetected().distance < enemy.attackDistance)//如果小于一定距离则使敌人爆炸
enemy.state.KillEntity();//这将使敌人进入死亡状态并使玩家获得灵魂


        }
else
{
if (stateTimer < 0 || Vector2.Distance(player.position, enemy.transform.position) > 10)
{
enemy.enemyStateMachine.ChangeState(enemy.idleState);
}
}

        if (player.position.x > enemy.transform.position.x)
{
moveDir = 1;
}
else if (player.position.x < enemy.transform.position.x)
{
moveDir = -1;
}

        enemy.SetVelocity(moveDir * enemy.moveSpeed, rb.velocity.y);
}

ShadyDeadState脚本:

    public override void Update()
{
base.Update();

        if(triggerCalled)//动画触发到敌人消失
enemy.SelfDestroy();
}

http://www.dtcms.com/a/409893.html

相关文章:

  • 第三方软件登记测试机构:【软件登记测试机构HTML5测试技术】
  • 元宇宙的宠物经济:虚拟宠物的饲养与交易
  • 如何在 CentOS 7 上安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 文件
  • 做网站的盈利模式北京软件开发公司找和丰软件专业
  • 长视频分析模型 LongVU 论文内容总结与技术架构解析
  • Datawhale25年9月组队学习:llm-preview+Task4:微调大模型
  • Unity-动画目标匹配
  • 国标GB28181平台EasyGBS视频调阅功能在跨域安防监控中的核心应用
  • dlib库关键点定位和疲劳检测
  • 甘肃省建设工程网上投标网站学院门户网站建设
  • JavaWeb--day11--登录认证
  • [VCS]Verdi/VCS 波形调试最佳实践清单
  • 网站怎么做播放窗口网站数据模版
  • 深入理解Kafka的复制协议与可靠性保证
  • 自动化接口框架搭建分享-pytest第三部分
  • WPF 控件悬停弹窗高级指南:用 Behavior 实现带动画的智能 HoverPopup
  • 佳维视工业显示器在喷码机中的应用
  • 自存19-48
  • ARM CoreSight:多核SoC调试追踪架构解析
  • Windows 显示器EDID笔记
  • 有哪些做任务的网站海淀区seo搜索引擎优化企业
  • 【C++实战㊻】解锁C++观察者模式:从理论到实战
  • 类和对象(二)
  • 开源多场景问答社区论坛Apache Answer本地部署并发布至公网使用
  • vue3 通过 Vue3DraggableResizable实现拖拽弹窗,可修改大小
  • 广州网站制作信科建设白名单 网站
  • DirBuster工具的文本介绍以及使用方法
  • DeepSeek-V3.1-Terminus:蓝耘API+CherryStudio实测国产最新开源模型,推理能力竟让我后背发凉
  • 金仓数据库:破解电子证照国产化难题,开启政务效能新篇
  • 杭州小蜜蜂网站建设宝坻做网站哪家好