作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 html 5 和 canvas 开发一款游戏,并且是游戏开发的新手。现在我开发了一款游戏,其中汽车和怪物很少,我可以通过以下代码控制汽车:
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 .
感谢任何帮助。
最佳答案
你快到了!
只需向您的 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/
关于javascript - 如何在游戏中自动移动我的车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484196/
Che 看起来很有前途,但有人在使用它吗?或者它对任何人都有效吗? 偶尔我会尝试让 Che 调试器与 golang 或 nodejs 一起工作。我相信 Che 是开发人员使用 docker 的方式,我
我是一名优秀的程序员,十分优秀!