This commit is contained in:
2024-07-29 11:05:17 +08:00
parent f131de6489
commit 5fa8794c09
18 changed files with 304 additions and 44 deletions

View File

@@ -0,0 +1,58 @@
/*
* @Author: dgflash
* @Date: 2022-07-21 17:30:59
* @LastEditors: dgflash
* @LastEditTime: 2022-09-02 14:40:28
*/
import { Node } from "cc";
/** 物理分组数据 */
export class GroupItem {
private _value: number;
/** 分组值 */
get value(): number {
return this._value;
}
private _name!: string;
/** 分组名 */
get name(): string {
return this._name;
}
/** 碰撞掩码 */
get mask(): number {
return 1 << this._value;
}
/**
* 构造函数
* @param value 分组值
* @param name 分组名
*/
constructor(value: number, name: string) {
this._value = value;
this._name = name;
}
}
/***
* 为了方便使用,将编辑器中的物理分组定义到代码。如果编辑器中有修改,确保同步到这里。
*/
export class PhysicsUtil {
/** 默认物理分组 */
static DEFAULT = new GroupItem(0, 'DEFAULT');
/** 能通过屏幕触摸中发出的射线检查到的游戏对象 */
static MONSTER = new GroupItem(2, 'MONSTER');
static HERO = new GroupItem(4, 'HERO');
static MONSTER_SKILL = new GroupItem(8, 'MONSTER_SKILL');
static HERO_SKILL = new GroupItem(16, 'HERO_SKILL');
static setNodeLayer(item: GroupItem, node: Node) {
node.layer = item.mask;
node.children.forEach(n => {
n.layer = item.mask;
PhysicsUtil.setNodeLayer(item, n);
});
}
}