Skip to content
角色插槽

角色插槽

阅读本文大概需要 10 分钟

本文概述了插槽分类,插槽的位置,以及使用效果。

插槽介绍

插槽定义:插槽是根据角色模型预留的不同点位,玩家可以利用插槽在角色模型上附加对象,比如预制组件或物体,达到装扮的效果。并且附加对象会跟随角色模型进行移动和旋转。

目前插槽功能划分为两类,分别是:【人形插槽】/【非人形插槽】

  • 【人形插槽】:是根据人形形象的效果,设置的插槽位置,方便用户放置武器、翅膀、特效、称号等效果。

  • 【非人形插槽】:是根据非人形形象的效果,设置的插槽位置,方便用户放置武器、道具装饰等效果。

人形形象插槽

人形插槽介绍说明

中文名称枚举名称枚举序号应用说明
头发Hair0放置发卡、帽子等装饰物
脸部Head1放置面具等装饰物
头部左侧LeftHead2放置精灵耳朵等装饰物
头部右侧RightHead3放置精灵耳朵等装饰物
眼镜Glasses4放置眼镜等装饰物
眼睛Eyes5放置眼镜等装饰物
面部装饰FaceOrnamental6放置面具等装饰物
嘴部Mouse7放置烟、口哨、棒棒糖等装饰物
左肩部LeftShoulder8组装角色模型可能会用到
右肩部RightShoulder9组装角色模型可能会用到
左手手套LeftGlove10放置拳套等装饰物
右手手套RightGlove11放置拳套等装饰物
背部装饰BackOrnamental12放置飞行道具、特效等装饰物
左背LeftBack13放置飞行道具、特效等装饰物
右背RightBack14放置飞行道具、特效等装饰物
左手LeftHand15放置武器、交互道具等
右手RightHand16放置武器、交互道具等
左脚LeftFoot17放置鞋类装饰物
右脚RightFoot18放置鞋类装饰物
臀部Buttocks19放置妖精尾巴等装饰物
头顶光圈Rings20放置光环特效等装饰物
头顶标题Nameplate21放置名称、称号、血条等UI效果
聊天框ChatFrame22放置聊天框的UI效果
根节点Root23由于根节点不会跟随角色动作晃动,相对于比较稳定,所以会放置一些脚底特效等。
左手肘LeftLowerArm24组装角色模型可能会用到
右手肘RightLowerArm25组装角色模型可能会用到
左大腿根LeftThigh26组装角色模型可能会用到
右大腿根RightThigh27组装角色模型可能会用到
左膝盖LeftCalf28组装角色模型可能会用到
右膝盖RightCalf29组装角色模型可能会用到
第一人称摄像机FirstpersonCamera30可以放置第一人称摄像机

插槽说明:角色的插槽数量较多,有些插槽可能只有在组装角色时才能用到,当然插槽位置不合适时,也可以通过调整物体的相对位置和相对旋转进行微调。

使用说明:人形插槽有两种使用方式,分别是在角色编辑器中使用,以及在脚本中使用。

角色编辑器的插槽使用

【角色编辑器】中可以点击【挂件】页签。

在【挂件】页签下,找到我们需要的插槽部位。

然后点击【添加】功能,就会显示可以附加的物体。

最后从【资源库】中,找到相应的【物体】或【预制体】拖入到改物品槽中。并可以在视口中看到插槽效果。

如何使用插槽功能?

将物体附加到插槽上

实际应用:我们可以利用插槽功能,将武器和装饰物或者特效套在角色上。实现想要的效果。

首先我们将【29052】的武器资源和【27704】的特效的资源放置在优先加载的列表

然后放置下面的脚本,即可实现效果。

ts
@Component
export default class NewScript extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {
        //获取玩家
        let chara = Player.localPlayer.character
        //新增光环特效
        let halo = GameObject.spawn("27704", {replicates: true}) as Effect;
        //将光环插到角色头顶插槽上
        chara.attachToSlot(halo, HumanoidSlotType.Nameplate);
        //新增物体_钢剑
        let sword = GameObject.spawn("29052")
        
        //按下“1”键触发以下逻辑
        InputUtil.onKeyDown(Keys.One, () => {
            //将“钢剑”插到角色的右手插槽上
            chara.attachToSlot(sword, HumanoidSlotType.RightHand)
        });
    }
}
@Component
export default class NewScript extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {
        //获取玩家
        let chara = Player.localPlayer.character
        //新增光环特效
        let halo = GameObject.spawn("27704", {replicates: true}) as Effect;
        //将光环插到角色头顶插槽上
        chara.attachToSlot(halo, HumanoidSlotType.Nameplate);
        //新增物体_钢剑
        let sword = GameObject.spawn("29052")
        
        //按下“1”键触发以下逻辑
        InputUtil.onKeyDown(Keys.One, () => {
            //将“钢剑”插到角色的右手插槽上
            chara.attachToSlot(sword, HumanoidSlotType.RightHand)
        });
    }
}

效果图:

调整物体的位置

功能说明:当物体插到插槽上的位置不合适时,我们可以通过调整物体的相对位置或者是插槽位置来改变物体的位置效果,但是由于插槽位置会影响插到该插槽的所有附加物体的位置,所以我们更推荐使用更改物体本身的位置进行调整效果。

插槽位置调整:

ts
//获取玩家
let chara = Player.localPlayer.character 
//设置角色[右手插槽]的位置
chara.description.advance.slotAndDecoration.slot[HumanoidSlotType.RightHand].slotOffset.position = new Vector(10, 0, -10)
//设置角色[右手插槽]的旋转
chara.description.advance.slotAndDecoration.slot[HumanoidSlotType.RightHand].slotOffset.rotation = new Rotation(0, 0, 180)
//设置角色[右手插槽]的缩放
chara.description.advance.slotAndDecoration.slot[HumanoidSlotType.RightHand].slotOffset.scale = Vector.one
//获取玩家
let chara = Player.localPlayer.character 
//设置角色[右手插槽]的位置
chara.description.advance.slotAndDecoration.slot[HumanoidSlotType.RightHand].slotOffset.position = new Vector(10, 0, -10)
//设置角色[右手插槽]的旋转
chara.description.advance.slotAndDecoration.slot[HumanoidSlotType.RightHand].slotOffset.rotation = new Rotation(0, 0, 180)
//设置角色[右手插槽]的缩放
chara.description.advance.slotAndDecoration.slot[HumanoidSlotType.RightHand].slotOffset.scale = Vector.one

插槽位置调整:

ts
//调整角色光环特效的本地位置和大小
halo.localTransform = new Transform(new Vector(-50, 0, -50),new Rotation(0, 90, 0),new Vector(3, 3, 3));
//调整角色光环特效的本地位置和大小
halo.localTransform = new Transform(new Vector(-50, 0, -50),new Rotation(0, 90, 0),new Vector(3, 3, 3));

效果图:

将物体从插槽中分离

功能说明:分离是指附加物体与角色的插槽不再有绑定关系。物体将脱离插槽,独立显示在世界中。

示例脚本:

ts
// 分离角色光环特效
chara.detachFromSlot(halo);
// 分离角色光环特效
chara.detachFromSlot(halo);

效果图:

将物体从插槽中移除

功能说明:物体移除是将物体彻底从世界中删除。

示例脚本:

ts
//移除角色光环特效
halo.destroy()
//移除角色光环特效
halo.destroy()

效果图:

非人形形象插槽

无论是人形插槽还是非人形插槽,使用均一致,具体请见上方,这里主要描述每个不同形象的插槽位置。

四足插槽介绍说明

中文名称枚举名称枚举序号应用说明
根节点Root0由于根节点不会跟随动作晃动,相对于比较稳定,所以会放置一些脚底特效等。
胸腔Chest1放置胸部等装饰物
上脊柱UpperSpine2放置背部等装饰物
下脊柱LowerSpine3放置背部等装饰物
脖子Neck4放置围脖、吊牌等装饰物
头部Head5放置眼镜、帽子等装饰物
左前脚FrontalLeftFoot6放置攻击特效和道具等
右前脚FrontalRightFoot7放置攻击特效和道具等
左后脚RearLeftFoot8放置攻击特效和道具等
右后脚RearRightFoot9放置攻击特效和道具等
尾巴Tail10放置尾部装饰物

示例脚本:

ts
//新增光环特效
let halo = GameObject.spawn("27704",{ replicates: true }) as Effect;
//将光环插到非人形对象的头部插槽上
chara.attachToSlot(halo, NonHumanoidType.Head);
//新增光环特效
let halo = GameObject.spawn("27704",{ replicates: true }) as Effect;
//将光环插到非人形对象的头部插槽上
chara.attachToSlot(halo, NonHumanoidType.Head);

效果图:

鱼插槽介绍说明


中文名称枚举名称枚举序号应用说明
根节点Root0由于根节点不会跟随动作晃动,相对于比较稳定,所以会放置一些脚底特效等。
胸腔Chest1放置胸部等装饰物
上脊柱UpperSpine2放置背部等装饰物
下脊柱LowerSpine3放置背部等装饰物
头部Head5放置眼镜、帽子等装饰物
尾巴Tail10放置尾部装饰物
上边鱼鳍FrontalRightFoot7放置攻击特效和道具等
左边鱼鳍RearLeftFoot8放置攻击特效和道具等
右边鱼鳍RearRightFoot9放置攻击特效和道具等

西方龙插槽介绍说明


中文名称枚举名称枚举序号应用说明
根节点Root0由于根节点不会跟随动作晃动,相对于比较稳定,所以会放置一些脚底特效等。
胸腔Chest1放置胸部等装饰物
上脊柱UpperSpine2放置背部等装饰物
下脊柱LowerSpine3放置背部等装饰物
脖子Neck4放置围脖、吊牌等装饰物
头部Head5放置眼镜、帽子等装饰物
左前脚FrontalLeftFoot6放置攻击特效和道具等
右前脚FrontalRightFoot7放置攻击特效和道具等
左后脚RearLeftFoot8放置攻击特效和道具等
右后脚RearRightFoot9放置攻击特效和道具等
尾巴Tail10放置尾部装饰物
左翼翅膀LeftWing19放置飞行特效
右翼翅膀RightWing18放置飞行特效

东方龙插槽介绍说明

中文名称枚举名称枚举序号应用说明
根节点Root0由于根节点不会跟随动作晃动,相对于比较稳定,所以会放置一些脚底特效等。
胸腔Chest1放置胸部等装饰物
上脊柱UpperSpine2放置背部等装饰物
下脊柱LowerSpine3放置背部等装饰物
脖子Neck4放置围脖、吊牌等装饰物
头部Head5放置眼镜、帽子等装饰物
左前脚FrontalLeftFoot6放置攻击特效和道具等
右前脚FrontalRightFoot7放置攻击特效和道具等
左后脚RearLeftFoot8放置攻击特效和道具等
右后脚RearRightFoot9放置攻击特效和道具等
尾巴Tail10放置尾部装饰物