Привет, начинающий разработчик игр, я пытаюсь добавить систему коллизий в свой JavaScript, проблема в том, что мне не хвHtml

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

Сообщение 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/hey-aspiring-game-developer-here-i-am-trying-to-add-a-collision-system-to-my-j[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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