Я создаю игру в Lua для удовольствия (даже если вы не знаете Lua, вы, вероятно, можете мне помочь в этом, применительно к любому языку программирования). Моя проблема в том, у меня есть х и у переменного, определенные в таблице для игрока:Использование тригонометрии для расчета угла перемещения с использованием положения мыши
player = {}
player.x = 10
player.y = 10
player.velocity = 50
Моей цели иметь игрок движение к позиции мышек на экране. В настоящее время я настроен для увеличения/уменьшения значения x и значения y для каждого обновления в зависимости от положения мыши. Мой код выглядит примерно так:
function update(delta_time) -- delta_time is time in milliseconds since last update
if mouse.x > screen.width and mouse.y < screen.height then
player.x = player.x + player.velocity * delta_time
player.y = player.y + player.velocity * delta_time
end
Это был только один пример направления, которое я бы определил. Моя проблема заключается в том, что я не хочу иметь гигантские блоки управления потоком, проверяющие, в каком квадранте находятся позиция x и y мыши, и соответственно корректируя положение игроков x и y. Я предпочел бы иметь текущее 360-градусное обнаружение, которое может переместить игрока к углу, который мышь позиционирует из центра.
Еще одна проблема, с которой я столкнулся, когда я перемещаю плеер справа от экрана, я просто увеличиваю значение x, но когда я перемещаю плеер на северо-восточную сторону экрана, я увеличиваю значение x AND y , Это означает, что игрок будет идти в 2 раза быстрее, в зависимости от того, насколько тонким является угол движения. Когда я делаю северо-восточный восток и северо-западный запад, игрок теперь идет на 3 раза быстрее, потому что я увеличиваю/уменьшаю y на 2 и x на 1. Я понятия не имею, как это исправить. Я действительно хорош с математикой и триггером, но я плохо отношусь к своей игре. Мне нужно, чтобы кто-то включил свет для меня, и я пойму. Спасибо за ваше время, если вы действительно все это прочитали.
Как вы думаете, может быть, вы можете ссылаться на весь код, используя pastebin? – Coffee
@Coffee Если утверждение, показанное мной в качестве примера, было недостаточно? Он просто проверяет квадрант, в котором находится мышь, и соответственно увеличивает/уменьшает значения x и y для каждого обновления. Если вам нужно, чтобы я подробно рассказывал об определенной части игры, я могу; дай мне знать. –
Хорошо, nvm - Думаю, этого должно быть достаточно – Coffee