本帖最后由 (๑•ั็ω•็ั๑) 于 2023-10-9 11:34 编辑
1.将Player的外观类型改为多足形象
2.资源库中先搜索龙这个形象,在角色/NPC分类下找到小龙这个多足形象拖入到Player的外观形象设置中
3.同理,在动画分类中找几个适合该形象的动画资源,跑:160628,待机:160619,挠痒:160627
4.代码中预先加载这几个动画,控制这些动画在合理的地方播放就行,比如移动时播放跑的动画,同时开启角色的飞行模式
@UIBind('')
export default class DefaultUI extends UIScript {
private character: Character;
runAni: Animation;
atkAni: Animation;
idleAni: Animation;
readonly runGuid = "160618";
readonly atkGuid = "160627";
readonly idleGuid = "160619";
/** 仅在游戏时间对非模板实例调用一次 */
protected onStart() {
//设置能否每帧触发onUpdate
this.canUpdate = true;
//找到对应的跳跃按钮
const attackBtn = this.uiWidgetBase.findChildByPath('RootCanvas/Button_Attack') as Button
AssetUtil.asyncDownloadAsset(this.runGuid);
AssetUtil.asyncDownloadAsset(this.atkGuid);
AssetUtil.asyncDownloadAsset(this.idleGuid);
Player.asyncGetLocalPlayer().then((player) => {
this.character = player.character;
this.runAni = this.character.loadAnimation(this.runGuid);
this.atkAni = this.character.loadAnimation(this.atkGuid);
this.idleAni = this.character.loadAnimation(this.idleGuid);
});
InputUtil.onKeyDown(Keys.One, () => { this.character.switchToFlying(); });
InputUtil.onKeyDown(Keys.Two, () => { this.character.switchToWalking(); });
//点击攻击按钮,异步获取人物后执行攻击动作
attackBtn.onPressed.add(() => {
// 待机状态且没有播放攻击动画
if (!this.atkAni.isPlaying) {
this.atkAni.play();
}
})
}
protected onUpdate(dt: number) {
if (!this.character) return;
if (this.character.isMoving && !this.runAni.isPlaying) {
this.runAni.play();
}
if (!this.character.isMoving && !this.idleAni.isPlaying && !this.atkAni.isPlaying) {
this.idleAni.play();
}
}
}
|