阿凡达NPC图层管理 NPCLayerManager
阿凡达NPC图层管理器是用于控制云渲染阿凡达NPC图层的工具,通过获取该管理器,用户可以方便地进行阿凡达NPC图层的控制和管理。 该工具的主要功能包括:
- 添加一个阿凡达NPC
- 获取所有图层
- 批量删除某一层
- 设置双击NPC的回调函数
我们将提供详细的使用指南和功能说明,帮助用户更好地使用该工具。
NPCLayerManager 理器。
用户可以调用云渲染实例 cloud
上的 getNPCLayerManager()
方法来获取 NPCLayerManager
阿凡达NPC图层管理器。
ts
const NPCLayerManager = await cloud.getNPCLayerManager()
const NPCLayerManager = await cloud.getNPCLayerManager()
用户调用 cloud.getNPCLayerManager()
后,nPCLayerManager
会被自动挂载到当前 cloud
实例上。
ts
await cloud.getNPCLayerManager()
const NPCLayerManager = cloud.nPCLayerManager
await cloud.getNPCLayerManager()
const NPCLayerManager = cloud.nPCLayerManager
添加一个阿凡达NPC | addNPC
- 说明:通过自定义参数,添加一个阿凡达NPC
我们可以调用 NPCLayerManager
上面的 addNPC
方法来添加一个阿凡达NPC。
- 参数说明
Name | Type | Description |
---|---|---|
NPCInfo | NPCObjectInfo | NPC对象信息 |
layerName | null | string |
阿凡达NPC
您可以通过添加一个阿凡达NPC,使场景更加生动有趣。要添加一个阿凡达NPC,您可以使用云渲染提供的 addNPC
方法,将一个阿凡达模型文件添加到场景中去。
调用示例:
ts
let nPCLayerManager = await cloud.getNPCLayerManager()
const translation2 = new Vector3(0, 0, 0)
const eulerAngle2 = new Euler(30, 0, 0)
const scaling2 = new Vector3(1, 1, 1)
const trans = new Transform(translation2, eulerAngle2, scaling2)
const info: NPCObjectInfo = {
resource: 'avatar_woman.wlkx',
transform: trans,
name: 'dms',
action: AvatarNPCPosture.Dun_CaoZuo,
}
await nPCLayerManager.addNPC(info, 'dms_1')
let nPCLayerManager = await cloud.getNPCLayerManager()
const translation2 = new Vector3(0, 0, 0)
const eulerAngle2 = new Euler(30, 0, 0)
const scaling2 = new Vector3(1, 1, 1)
const trans = new Transform(translation2, eulerAngle2, scaling2)
const info: NPCObjectInfo = {
resource: 'avatar_woman.wlkx',
transform: trans,
name: 'dms',
action: AvatarNPCPosture.Dun_CaoZuo,
}
await nPCLayerManager.addNPC(info, 'dms_1')
获取所有图层 | getAllLayer
- 说明:获取所有图层
我们可以调用 NPCLayerManager
上面的 getAllLayer
方法来获取所有图层。
调用示例:
ts
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
批量删除某一层 | removeLayer
- 说明:批量删除某一图层
我们可以调用 NPCLayerManager
上面的 removeLayer
方法来批量删除某一层。
- 参数说明
Name | Type | Description |
---|---|---|
layerArray | NPCLayer [] | 阿凡达NPC图层数组 |
调用示例:
ts
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
const e = await nPCLayerManager.removeLayer(ret)
let nPCLayerManager = await cloud.getNPCLayerManager()
const ret = await nPCLayerManager.getAllLayer()
const e = await nPCLayerManager.removeLayer(ret)
设置双击NPC的回调函数 | setDbClickCallback
- 说明:设置双击NPC的回调函数
我们可以调用 NPCLayerManager
上面的 setDbClickCallback
方法来设置双击NPC的回调函数。
- 参数说明
Name | Type |
---|---|
fn | (npc : null | NPCObject ) => void |
调用示例:
ts
function pickNPC(npc: NPCObject | null) {
console.log(npc)
}
let nPCLayerManager = await cloud.getNPCLayerManager()
nPCLayerManager.setDbClickCallback(pickNPC)
function pickNPC(npc: NPCObject | null) {
console.log(npc)
}
let nPCLayerManager = await cloud.getNPCLayerManager()
nPCLayerManager.setDbClickCallback(pickNPC)
设置某个npc对象的位置随鼠标移动 | setAvatarNPCPosByMouse
- 说明:设置某个npc对象的位置随鼠标移动
我们可以调用 NPCLayerManager
上面的 setAvatarNPCPosByMouse
方法来设置某个npc对象的位置随鼠标移动。
- 参数说明
Name | Type | Description |
---|---|---|
npcObj | NPCObject | NPCObject对象 |
调用示例:
ts
let nPCLayerManager = await cloud.getNPCLayerManager(); //获取阿凡达NPC图层管理器
const translation2 = new Vector3(0, 0, 0);
const eulerAngle2 = new Euler(30, 0, 0);
const scaling2 = new Vector3(1, 1, 1);
const trans = new Transform(translation2, eulerAngle2, scaling2);
const info: NPCObjectInfo = {
resource: 'avatar_woman.wlkx',
transform: trans,
name: 'dms',
action: AvatarNPCPosture.Dun_CaoZuo,
}
var npcObj = await nPCLayerManager.addNPC(info, 'dms_1');
await nPCLayerManager.setAvatarNPCPosByMouse(npcObj);
let nPCLayerManager = await cloud.getNPCLayerManager(); //获取阿凡达NPC图层管理器
const translation2 = new Vector3(0, 0, 0);
const eulerAngle2 = new Euler(30, 0, 0);
const scaling2 = new Vector3(1, 1, 1);
const trans = new Transform(translation2, eulerAngle2, scaling2);
const info: NPCObjectInfo = {
resource: 'avatar_woman.wlkx',
transform: trans,
name: 'dms',
action: AvatarNPCPosture.Dun_CaoZuo,
}
var npcObj = await nPCLayerManager.addNPC(info, 'dms_1');
await nPCLayerManager.setAvatarNPCPosByMouse(npcObj);