Egorian
@Egorian

Phaser. Объект проходит через коллизию при большой скорости?

Делаю игру с видом сверху. Делаю так чтобы мышка не выходила за камеру.
reticle = this.physics.add.sprite(player.x,player.y, 'reticle');
        reticle.setOrigin(0.5, 0.5).setCollideWorldBounds(true)
        reticle.body.allowGravity=false;  
 invisible_h = this.physics.add.group();
        createwall(invisible_h,false,0,0,"white-h",2,1)
        createwall(invisible_h,false,0,900,"white-h",2,1)
        createwall(invisible_h,false,player.x-900,0,"white",1,2)
        createwall(invisible_h,false,900,0,"white",1,2)
this.physics.add.collider(reticle,invisible_h)
this.input.on('pointermove', function (pointer) {
                if (this.input.mouse.locked)
                {
                    reticle.setVelocityX(pointer.movementX*60) 
                    reticle.setVelocityY(pointer.movementY*60) 
                }
            }, this)   
function update(){


reticle.setVelocityX(0);
reticle.setVelocityY(0);
// делает так чтобы мышка не отставала от игрока
reticle.body.velocity.x = player.body.velocity.x;
reticle.body.velocity.y = player.body.velocity.y;

}
function createwall(group,gravity,x,y,sprite,sx,sy){
    let wall= group.create(x,y,sprite);
    wall.body.allowGravity=false;
    wall.setScale(sx,sy)
    wall.body.immovable = true;
}

Сначала мышка не проходит через стенку, но двигаю reticle быстро, то она проходит через неё. Как решить эту проблему?
P.S коллизия перестает работать при velocity>=1440. Может это связано с частотой обновления?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Разработка игр
Это связано с тем, как часто считается физика. Если объект на предыдущем "кадре" физики стоял например слева от чего то полностью. а на следующем кадре "физики" - уже полностью справа - то коллизии не будет - физика не работает с "телепортами".

Методы решения:
- неправильный - поднять частоту просчета физики
- правильный - проверят нет ли объектов между старой и новой позицией. Метод проверки не подскажу для фазера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы