如何在游戏动画中动态命名对象



我正在尝试使用JS框架开发一款游戏。

到目前为止,我已经为一个角色创建了多个动画,我需要能够为不同的动画运行我的动画函数(实际上是向角色对象添加组件,组件为该角色创建和管理所有动画)。

假设玩家按下"a"键执行X动作,而按下"b"键执行Y动作。

在当前时刻,我检测按下了哪个键,然后使用switch / case函数设置当前动画,然后将其推送到动画组件。

效果很好,但问题是,对于每个新动画,我都要这样做:

switch (keydown){
   case 65: // 'a' key was pressed
       character.animation = myAnimationComponent.animation.a;
       break;
   case 66: // 'b' key was pressed
       character.animation = myAnimationComponent.animation.b;
       break;
}
// something happens to 'animation' that renders it on the screen

假设我实际将动画值(也就是'a'或'b')存储到keydown对象中,我可以将其取出:keydown.animation;打印a

因此,与其为每个动画设置一个switch或if/else case,我如何将动画值传递给对象,这样我就不需要为每个动画设置case了,例如:

animation =  myAnimationComponent.animation.?keydown.animation?;

(keydown。动画应该输出'a'或'b')

尝试使用:

var animType = String.fromCharCode(keydown);
if(animType){
     animation = myAnimationComponent.animation[animType];
}

一个解决方案是使用keydown值作为对象

中的键
animation =  myAnimationComponent.animation[keydown];

然后,当您稍后检索它时,您可以将它传递给一个函数,该函数将数值转换为字母字符

String.fromCharCode(97 + animation);

最新更新