添加NPC攻击逻辑与动画
assets/Scripts/WoodenSkeleton/WoodenSkeletonManager.ts
判断角色是否在NPC的上下左右四个格子中;当前X坐标相等,且Y坐标相距小于等于1格,或者Y坐标相等,X坐标小于等于1格
async init() {
// 攻击检测,角色出现在NPC附近,NPC主动发起攻击
EventManager.Instance.on(EVENT_ENUM.PLAYER_MOVE_END, this.onAttack, this)
}
// NPC攻击角色检测
onAttack() {
const { x: playerX, y: playerY } = DataManager.Instance.player
// 判断角色是否在NPC的上下左右四个格子中
const disX = Math.abs(this.x - playerX)
const disY = Math.abs(this.y - playerY)
// 当前X坐标相等,且Y坐标相距小于等于1格,或者Y坐标相等,X坐标小于等于1格
if ((this.x === playerX && disY name.includes(v))) {
// 统一state入口
this.node.getComponent(EntityManager).state = ENTITY_STATE_ENUM.IDLE
// this.currentState = this.stateMachines.get(PARAMS_NAME_ENUM.IDLE)
}
})
}
run() {
//...
case this.stateMachines.get(PARAMS_NAME_ENUM.ATTACK):
if (this.params.get(PARAMS_NAME_ENUM.ATTACK).value) {
this.currentState = this.stateMachines.get(PARAMS_NAME_ENUM.ATTACK)
} else if...
}
添加角色死亡逻辑与动画
assets/Scripts/WoodenSkeleton/WoodenSkeletonManager.ts
在NPC攻击处通知角色死亡
// ...
// NPC攻击角色检测
onAttack() {
const { x: playerX, y: playerY, state: playState } = DataManager.Instance.player
// 判断角色是否在NPC的上下左右四个格子中
const disX = Math.abs(this.x - playerX)
const disY = Math.abs(this.y - playerY)
// 当前X坐标相等,且Y坐标相距小于等于1格,或者Y坐标相等,X坐标小于等于1格,且判断当前角色不是死亡状态,不然会出现鞭尸现象
if (
((this.x === playerX && disY
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?