背对墙壁的玩家不应碰撞
Player facing away from the wall should not collide
我正在开发我的第一个Javascript游戏。这是一个自上而下的2D视图(想想GTA 1/2(。现在我在碰撞检测方面遇到了问题。我有多个实体,其中一个是玩家,另一个是静态对象(为了简单起见,假设一堵墙(。
每个对象都有 X/Y 坐标,玩家也有速度和角度(玩家从 0-360 度面向哪个方向(。与墙壁的碰撞检测工作正常,如果玩家碰撞,我会在其中一个轴上停止速度,结果玩家可以"滑动"墙壁。
现在来解决问题:一旦玩家再次与墙壁相撞,其中一个轴上的移动就会停止。如果之后的玩家转身背对墙壁,则该轴的移动仍然停止,因为 ha 碰撞。
我希望玩家,如果背对着物体,可以自由移动他想要的方式,我如何实现这一点?我想我需要弄清楚玩家面对的方向,以及他是面对还是远离物体?
for( var i = 0; i < GAME.entities.length; i++ ) {
if( this._collision( GAME.entities[i] ) ) {
var distanceX = GAME.entities[i].x - this.x;
var distanceY = GAME.entities[i].y - this.y;
if( distanceX < 0 )
distanceX *= -1;
if( distanceY < 0 )
distanceY *= -1;
if( !stopX ) {
stopX = ( distanceX > distanceY );
}
if( !stopY ) {
stopY = ( distanceX < distanceY );
}
}
}
我想出了如何做到这一点:
var degrees = ( Math.atan2( GAME.entities[i].x - this.x, GAME.entities[i].y - this.y ) * 180 / Math.PI ) + this.angle
相关文章:
- IE7-FIX下的总碰撞
- 逐像素碰撞检测弹球
- 元素未使用当前玩家操作进行更新
- 如何在AngularJS中显示玩家回合
- 移动时停止玩家滑动
- 让玩家进入下一场比赛-锦标赛支架(需要一些逻辑)
- Highcharts多个Y轴绘图带碰撞
- 砖块和球之间的碰撞检测(使用数字数组)
- 为Phaser创建碰撞形状
- 为什么我应该使用带有碰撞检测的四叉树
- 四元数或 3 角,碰撞反应..3D
- 具有多个块的html5画布碰撞检测
- JW玩家:没有找到合适的玩家
- 为什么潜水器发生碰撞
- D3js地图标记碰撞检测
- html 5画布如何让玩家跳跃(纯无框架)
- 背对墙壁的玩家不应碰撞
- 如何进行碰撞预防?(重置玩家对象的位置)
- Javascript画布:旋转玩家时与不完全工作的敌人发生碰撞
- 碰撞检测困难,玩家飞