UnityLear 2D RPG项目—— 敌人状态机(1) 笔记

本文是关于Unity 2D RPG项目中敌人状态机的笔记,详细介绍了如何实现敌人的巡逻和攻击状态。通过基类状态声明,如OnEnterState和OnUpdateState,以及在Enemy父类中调用TransitionToState方法进行状态切换。在PatrolState中,当敌人到达目标附近或发现玩家时,会切换到AttackState进行攻击。
摘要由CSDN通过智能技术生成

UnityLear 2D RPG项目—— 敌人状态机

最近重新复习Unity项目,对2D RPG 代码做一下笔记

前言

状态机主要由抽象类实现,对状态包含的 方法 进行声明即可


一、Enemy 基类状态声明 以及 调用

1、Enemy 基类状态 声明

此处 只涉及到了 1、PatrolState (巡逻状态) 2、AttackState 攻击状态

无论是哪种状态, 都需要有 相同类型的方法定义,包括
1、OnEnterState (Start/初始化时调用)
2、OnUpdateState (Update 时调用)

创建 EnemyBaseState script, 代码如下:

// 基类构建  对象为 Enemy
Public abstract class EnemyBaseState{
   
	public abstract void OnEnterState(Enemy enemy);
	public abstract void OnUpdateState(Enemy enemy);
}

2、Enemy 基类状态 调用

调用 需要 状态切换方法 TransitionToState (), 在Enemy 父类脚本中 添加该方法

public void TransitionToState(EnemyBaseState state){
   
	currentState = state;  // Enemy 当前状态 切换为 输入参数状态
	currentState.OnEnterState(this);  // 运行 状态开始时调用的方法
}

例子:
先声明:
在这里插入图片描述

在Enemy对象的 Start() 方法中 将 初始状态切换为 巡逻状态
在这里插入图片描述
在 Enemy对象的 Update() 方法中 调用 OnupdateState()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值