[]使用方向键 控制精灵在格子中移动
使用方向键 在RPG中的格子中移动是很常见的功能!
可是在实际制作中会遇到很多问题
本人资质一般 弄了一个这个 弄了好久
基本上完美解决了同时按多个按键的问题
我以前的做法是 按哪个键 就忘哪个方向走 效率低 而且体验差
所以改了这个方案
当然 你可以继续优化这代码 并发给我 万分感谢
如果你也专注2D的RPG游戏开发 可以加我的微信 一起研究
13890999
事件
Laya.stage.on(Laya.Event.KEY_UP,this,this.onkeyup);事件响应
Laya.stage.on(Laya.Event.KEY_DOWN,this,this.onkeydown);
Laya.timer.frameLoop(1,this,this.loop);
onkeyup(e){
for(let i:number = 0;i<this.keyList.length;i++){
if(this.keyList[i]==e.keyCode){
this.keyList.splice(i,1);
break;
}
}
}
onkeydown(e){
if(this.keyList.indexOf(e.keyCode)<0){
this.keyList.push(e.keyCode);
}
}
loop(){
if(this.sp.x!=this.next_x||this.sp.y!=this.next_y){
if(this.sp.x!=this.next_x){
if(this.next_x>this.sp.x){
this.sp.x +=5;
}else{
this.sp.x -=5;
}
}else{
if(this.next_y>this.sp.y){
this.sp.y +=5;
}else{
this.sp.y -=5;
}
}
}else{
this.nextDirection();
}
}
nextDirection(){
this.direction = this.keyList[0];
if(this.direction==37) this.next_x -= 50;
if(this.direction==38) this.next_y -= 50;
if(this.direction==39) this.next_x += 50;
if(this.direction==40) this.next_y += 50;
}
原理说一下, 就是当按键按下时, 就会把这个键的keycode 存储到一个数组中, 抬起时就会从数组中删除这个keycode
当一个格子走完时, 就会从数组中找到第一个keycode 操作下一步的位置, 走位很流畅 没有按住就会停一会儿再走的那种 停滞感
希望能帮助到大家 更希望抛砖引玉 谢谢大家
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
wudi199553
赞同来自:
6super
赞同来自: