Согласно моим методам, в системе коллизий с боковой прокруткой игрок либо падает сквозь пол, либо ему не хватает памяти.Html

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Согласно моим методам, в системе коллизий с боковой прокруткой игрок либо падает сквозь пол, либо ему не хватает памяти.

Сообщение Anonymous »

У меня была система с проверкой, но по мере ее прокрутки я практически проваливался в пол. Чтобы помочь с этим, я попросилchatGPT прокомментировать мой код.
Основные проблемы, по-видимому, связаны с ReassignCollisionBox(), который вызывает ошибку памяти, и в нижней части update(). Я не уверен, как заставить это столкновение работать, поскольку все источники, которые я могу найти, предназначены для какого-то игрового движка, а не для JavaScript.

Код: Выделить всё

//Reassign the collisions and clear the orginal.
CollisonBoxes.length = 0;
for(let i=0; level.length; i++) {
for(let k=0; level[i].length; k++) {
ReassignCollisionBox(i,k);
}
}

//Note these code is not actually next to each other, this is in the update ^

function ReassignCollisionBox(down,right) {
let xmin = down * tilesize; //Upper Left Corner, X
let ymin = down * tilesize; //Upper Left Corner, Y
let xmax = xmin + tilesize; //Bottom Right corner, X
let ymax = ymin + tilesize; //Bottom Right Corner, Y
CollisonBoxes.push([[xmin,ymin],[xmax,ymax]])
return(true);
}
Я думаю, что это довольно надежный код для моего уровня опыта, но коллизии никогда не бывают для меня естественными.
Это... в основном рабочий код, без функций CollisionBox, но проблема все равно проваливается под пол.


< pre class="snippet-code-js lang-js" Prettyprint-override">

Код: Выделить всё

const stage = document.getElementById("stage");
const ctx = stage.getContext("2d");

ctx.fillRect(0, 0, stage.width, stage.height);

let keys = {};

window.addEventListener('keydown', (event) => {
keys[event.key] = true;
});

window.addEventListener('keyup', (event) =>  {
keys[event.key] = false;
});

game = {
cameraX: 0,
cameraY: 0,
pause: false,
pausedelay: 0,
fontSize: 16,
font: function() {
return this.fontSize.toString() + "px Arial";
}
};
player = {
x: 0, // Starting position for the player
y: 48,
width: 16,
height: 16,
dx: 0, // Change in x (velocity)
dy: 0, // Change in y (velocity for gravity)
speed: 2, // Player movement speed
gravity: 0.5, // Gravity force
jumpPower: -10, // Jump force (upward)
grounded: false // Check if the player is on the ground
};

level = [
[
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0]
],
[
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0]
],
[
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0]
],
[
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0],
[0, 0]
],
[
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0]
],
[
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8],
[1, 0],
[1, 8]
],
[
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0]
],
[
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0]
],
[
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0]
],
[
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 8],
[1, 0],
[1, 0]
]
];
//Game CollisonBox
CollisonBoxes = [];

colors = [
"rgb(0, 0, 0)", // 0 - Black
"rgb(255, 255, 255)", // 1 - White
"rgb(255, 0, 0)", // 2 - Red
"rgb(0, 255, 0)", // 3 - Green
"rgb(0, 0, 255)", // 4 - Blue
"rgb(255, 255, 0)", // 5 - Yellow
"rgb(0, 255, 255)", // 6 - Cyan
"rgb(255, 0, 255)", // 7 - Magenta
"rgb(128, 128, 128)", // 8 - Gray
"rgb(255, 165, 0)" // 9 - Orange
];

const tilesize = 16;

window.onload = function() {
GameLoop();
}

function update() {

game.pausedelay -= 1;
if (keys['p'] &&  game.pausedelay  tileX &&
player.x < tileX + tilesize &&
player.y + player.height > tileY &&
player.y + player.height  stage.height) {
player.y = stage.height - player.height;
player.dy = 0;
player.grounded = true;
}

//Camera fix
if (player.x >= 80 || player.dx 

Подробнее здесь: [url]https://stackoverflow.com/questions/79344402/side-scrolling-collisionbox-system-either-has-player-falling-through-floor-or-ru[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Согласно моим методам, в системе коллизий с боковой прокруткой игрок либо падает сквозь пол, либо ему не хватает памяти.
    Anonymous » » в форуме Javascript
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Почему игрок от первого лица в начале игры смотрит в пол, а не вперед?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Игрок меняет гравитацию, даже когда падает
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Мой игрок случайно падает в пустоте с поверхности
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Мой игрок случайно падает в пустоте с поверхности
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Html»