Unity里怪物打玩家扣血,底层就是属性载体 + 碰撞/触发检测 + 伤害计算 + 血量刷新 + 死亡回调这套链。传奇类俯视RPG通常不用物理刚体硬碰,而是用 OnTriggerEnter / OnTriggerStay 配合攻击盒(Hitbox/Hurtbox)做判定,M2Server那边则是距离检测 + 攻击间隔 + 命中公式,两端思路一致,表现层不同。
一、Unity侧基础结构(可直接抄)
1. 玩家挂 Health 组件
using UnityEngine;
using UnityEngine.UI;
public class Health : MonoBehaviour
{
public int maxHp = 100;
private int curHp;
public Slider hpBar;
void Start(){ curHp = maxHp; UpdateBar(); }
public void TakeDamage(int dmg)
{
if (dmg < 0) dmg = 0;
curHp -= dmg;
if (curHp <= 0){ curHp = 0; Die(); }
UpdateBar();
}
void UpdateBar(){
if (hpBar != null) hpBar.value = (float)curHp / maxHp;
}
void Die(){
Debug.Log(name + " 死亡");
// 播死亡动画、掉物、销毁
}
}
2. 怪物攻击盒挂 EnemyAttack
using UnityEngine;
public class EnemyAttack : MonoBehaviour
{
public int damage = 12;
public float attackInterval = 1.0f;
private float nextAttack = 0f;
void OnTriggerStay(Collider other)
{
if (!other.CompareTag("Player")) return;
if (Time.time < nextAttack) return;
nextAttack = Time.time + attackInterval;
var hp = other.GetComponent<Health>();
if (hp != null)
{
hp.TakeDamage(damage);
Debug.Log("怪物攻击玩家,扣除:" + damage);
}
}
}
武器/爪子子物体挂 BoxCollider 勾 Is Trigger,怪物本体挂 Rigidbody(Kinematic 也行),玩家挂 Collider + Tag Player,HP 条用 Canvas Slider 绑 hpBar。传奇类网格移动可把 Rigidbody 设 Kinematic,纯靠坐标距离判定也行:
二、往传奇机制靠拢的伤害公式
官服不是 hp -= monsterAtk,而是:
命中率 = 基础命中 + 武器准确 - 目标敏捷
实际伤害 = 攻击力下限~上限随机 - 防御力(物防/魔防取高)
最终伤害 = max(1, 实际伤害) × 技能系数 × 暴击系数
Unity里改写成:
public struct HitData
{
public int rawDamage;
public int defenderDef;
public bool canCrit;
}
public void ReceiveHit(HitData h)
{
int dmg = h.rawDamage - h.defenderDef;
if (dmg < 1) dmg = 1;
if (h.canCrit && Random.value < 0.1f) dmg *= 2;
TakeDamage(dmg);
}
攻击间隔、仇恨列表、技能冷却、施法前摇全部挂在怪物状态机里,传奇M2每100ms逻辑帧扫一次战斗队列,Unity侧用 attackInterval + Update 等效替代。
三、传奇服务端侧怪物扣血流程(M2逻辑)
1. 怪物AI状态机进“攻击”态 → 检测目标玩家在攻击距离内
2. 过攻击间隔(普通怪800~1200ms,BOSS更慢)
3. 算命中:命中率 = 怪物准确 + 等级系数 - 玩家敏捷,随机数命中失败只飘“Miss”
4. 算伤害:随机(攻下~攻上) - 玩家物防/魔防(取对应项),破防保底1
5. 写回玩家DB连接池、SendMsg 下发受击包、刷新客户端血条
6. 玩家HP≤0 → 死亡处理(爆装、回城、经验扣除按地图规则)
黑铁矿、首饰、幸运值只影响玩家攻防输入,不直接改怪物扣血函数。
四、热血传奇里比BOSS还受欢迎的几只“非正统BOSS”小怪
老玩家都懂,祖玛教主、赤月老母、虹魔教主那是行会战利品,散人日常发家全靠下面这些:
1. 白野猪(小白)
石墓4/5层、石墓阵、猪七、封魔殿刷。血量中等、攻不算狠,但爆裁决、骨玉、龙纹、35级技能书、沃玛全套。猪七一张图挤满人,遇不到比遇到还难受。
2. 极品红野猪 / 黑野猪
猪洞普通红野猪没人看,极品红野猪(血量异常高那只)专爆炼狱、银蛇、技能书;黑野猪掉凌霜级剑甲、加点首饰。两人组队随便清,回报超BOSS性价比。
3. 邪恶毒蛇 / 邪恶钳虫
蜈蚣洞死亡棺材、一线天。毒蛇像蝎蛇但颜色不对的那只,爆裁决骨玉;钳虫是蜈蚣洞区域霸主,刷新稳、竞争狠,散人捡漏圣地。
4. 虹魔猪卫 / 虹魔蝎卫
封魔谷纵横道、霸者大厅遍地走。刷新快、数量多,祖玛装备、沃玛装备、高级书全出,封魔谷开放后被叫“散人天堂”,比蹲虹魔教主实在。
5. 牛魔将军 / 牛魔祭祀
牛魔洞五层。小怪身板,爆祖玛武器、骨玉、裁决级别东西,单人可清,当年网吧里一堆人靠这俩起家。
6. 蝙蝠 / 多钩猫 / 钉耙猫 / 半兽勇士
蝙蝠早期回城卷唯一稳定来源;多钩猫钉耙猫叫“招财猫”,大爆金币和值钱小件;半兽勇士掉道士手镯、夏普尔、加点青铜头盔,苍月岛老散人定点蹲。
7. 触龙神(大虫子)
死亡棺材固定点,早期魔法免疫机制特殊,掉高级药、装备、书,争夺不亚于小BOSS。
这些怪共同点是:刷新快、单人可打、爆率不按身板走、产出覆盖沃玛~祖玛断层带,散人靠它们滚雪球,比赌BOSS尸体稳得多。Unity复刻时把它们做成“高爆率精英模板”:刷新计时器短、掉落表挂祖玛/沃玛节点、AI用普通近战状态机即可,玩家体感直接拉回石墓阵。
Unity怪物攻击玩家减血机制拆解与传奇比BOSS更香小怪盘点
来源:
作者:
点击:

