求助:让NPC播放打招呼的动作

[复制链接]
126 |2
玩具店老板 发表于 2024-10-2 18:34:51 | 显示全部楼层 |阅读模式
本帖最后由 玩具店老板 于 2024-10-2 18:36 编辑

问题描述及使用流程:想实现玩家靠近NPC,NPC就播放一个打招呼的动作动画。

1、创建了一个NPC,和一个触发器。
image.png

2、创建了一个脚本【HelloTrigger】,挂载到了触发器上。



@Component
export default class HelloTrigger extends Script {
    @Property({displayName:"NPC",capture:true})
    private npc_id : string = ""
    @Property({displayName:"打招呼动画"})
    private greet_anim : string =""
   
    protected async onStart(): Promise<void> {
        AssetUtil.asyncDownloadAsset(this.greet_anim)
        console.log("动画ID" + this.greet_anim);

        if(SystemUtil.isClient()) {
            console.log("NPC_id:"+this.npc_id);
            let npc =  GameObject.findGameObjectById(this.npc_id) as Character;
            console.log("NPC:"+npc);
            let trigger = this.gameObject as Trigger
            console.log("代码执行了");

            trigger.onEnter.add((obj :GameObject)=>{
                if(obj == Player.localPlayer.character)
                {
                    console.log("NPC播放动画");
                    let Hello_anim = npc.loadAnimation(this.greet_anim);  // 给角色加载一个动画
                    console.log("动画时长 " + Hello_anim.length);

                    Hello_anim.play();                  
                }
            })
        }
    }

}


image.png

运行起来的问题:玩家靠近NPC,NPC并不播放对应动画动作。

但log输出日志,可以看到标记“npc播放动画”,还有这段动画的“时长”数据

image.png


请问这个要怎么去解决问题?



回复

使用道具 举报

玩具店老板楼主 发表于 2024-10-2 21:28:53 | 显示全部楼层
找到解决办法了
原来是那个动作ID 无效了
我换了一个动作ID,就可以了
回复

使用道具 举报

丸子 发表于 2024-10-3 08:09:16 来自手机 | 显示全部楼层
玩具店老板 发表于 2024-10-2 21:28
找到解决办法了
原来是那个动作ID 无效了
我换了一个动作ID,就可以了

onStart方法不要写为异步,可以单独写一个异步的方法,在onStart里面调用
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表