我正在开发一个html 5游戏和画布以及游戏开发的新游戏。现在我开发了一款游戏,其中有很少的汽车和很少的怪物,我可以通过以下代码控制汽车:
update(){
if (keys.ArrowUp) { // Player holding up
this.y -= this.speed * frameTime;
this.dir = Math.PI * 0; // set direction
}
if (keys.ArrowDown) { // Player holding down
this.y += this.speed * frameTime;
this.dir = Math.PI * 1; // set direction
}
if (keys.ArrowLeft) { // Player holding left
this.x -= this.speed * frameTime;
this.dir = Math.PI * 1.5; // set direction
}
if (keys.ArrowRight) { // Player holding right
this.x += this.speed * frameTime;
this.dir = Math.PI * 0.5; // set direction
}
if(Math.sign(this.speed) === -1){ // filp directio of second car
this.dir += Math.PI; // set direction
}
monsters.array.forEach(monster => {
if(monster.isTouching(this)){
monster.reset();
monstersCaught += 1;
}
});
if (this.x >= canvas.width || this.y >= canvas.height || this. y < 0 || this.x < 0) {
this.reset();
}
}
但是现在我想让汽车在不同的方向上自行移动。我不想实现任何路由路径或任何AI。我只是想让汽车在不同的方向上自行移动。例如,直接移动3秒,然后向右移动2秒,向下移动3秒,依此类推。这是我的工作pen。
感谢任何帮助。
答案 0 :(得分:2)
你快到了!
只需在update()
方法中添加一个参数,即可编程控制您的汽车,而不是使用键盘。设为update(dir)
if (!dir && keys.ArrowUp) dir = 'up' // Player holding up
if (dir === 'up') {
this.y -= this.speed * frameTime;
this.dir = Math.PI * 0; // set direction
}
然后在updateObjects()
中,使用指示
heros.array[2].update('left');
现在这辆车将继续向左移动!
自动更改路线怎么样?
您可以保留一个内部值来跟踪汽车在同一方向上行驶的时间以及行驶方向。当它符合您设置的max
距离/时间时,让它选择一个新方向,同时重置跟踪器值!
this.traveled = 0;
this.currentDirection = 'left';
....
this.traveled += distance; // update the tracker
....
if(this.traveled > 1000) { // wow we already traveled 1000px to the left, time to switch direction!
this.currentDirection = 'right';
this.traveled = 0;
}
使用.update('left')
和.update('random')
查看更新后的笔了解详情:https://codepen.io/xna2/project/editor/XjQnqZ/