Четверг, 21 Ноября 2024, 14:45

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [132]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какой ЯП вы знаете?
Всего ответов: 27909
Главная » Статьи » Создание игр

Второй урок по LOVE2D. Самый простой платформер
И всем еще раз привет. :]

Сегодня я решил написать урок по созданию самого легкого платформера, давайте начнем сразу.




Создаем наш файл main.lua и вписываем туда нашу основу.
Код

function love.load()
  --букава
end

function love.update()
  --буковки  
end

function love.draw()
  --буковки  
end


Вот так, вы уже знаете что означают эти строчки.
Теперь в love.load мы пишем это: (У нас в папочке должен лежать спрайт нашего игрока, у меня квадрат 32*32)
Код

  player = {  
  x = 0, -- х героя
  y = 0, -- у героя
  image = love.graphics.newImage("player.png"), --картинка
  y_velocity = 0, -- сила по y
  }
  gravity = 600 -- сила гравитации
  jump_height = 300 -- высота прыжка

  winW, winH = love.graphics.getWidth(), love.graphics.getHeight()  


Тут мы создаем массив player в котором описываем его переменные и изображение.
minW, minH используют функцию получения ширины и высоты экрана, это можно запомнить, местами пригодится.

Теперь мы узнаем функцию love.keypressed(key), пишем уже после всех load, update и draw это:
Код

function love.keypressed(key)
  if key == "w" then
  if player.y_velocity == 0 then -- мы пробуем узнать, на земле ли герой, если да - прыгаем
  player.y_velocity = jump_height
  end
  end

Эта функция проверяет нажатие клавиши W, и если она нажата, выполняет еще одну проверку.


Теперь идем в love.update, вот тут вам нужно будет немного поковырять самому, ибо не должен же я абсолютно все разжевывать :]
Код

function love.update(dt)
  if love.keyboard.isDown("a") then
  player.x = player.x - 150*dt
  end
  if love.keyboard.isDown("d") then
  player.x = player.x + 150*dt
  end
  --тут движение, это мы знаем
  if player.y_velocity ~= 0 then -- если мы прыгаем
  player.y = player.y + player.y_velocity * dt  
  -- изменяем y нашего персонажа
  player.y_velocity = player.y_velocity - gravity * dt
  if player.y < 0 then -- мы опять на земле
  player.y_velocity = 0 -- сила равна 0
  player.y = 0 -- у = 0
  end
  end
end
end


Покопайтесь в этом коде сами, тут все просто :]


Теперь мы должны отрисовать землю и нашего героя, идем в love.draw

Код

  function love.draw()

  love.graphics.rectangle("fill", 0, winH / 2, winW, winH / 2)-- рисуем землю, используя наши перемнные minW и minH рисуем ее посредине экрана
  love.graphics.translate(winW / 2, winH / 2) -- вам это лучше не знать :]

  love.graphics.draw(player.image, player.x, -player.y) -- рисуем героя
end


Запускаем и радуемся ^^

Прошу простить, что код не очень хорошо прокомментирован, но в тоже время вы сами должны ковырять его и ваших знаний Lua, должно быть достаточно что бы понять это.
Всем удачи!
Категория: Создание игр | Добавил: Notin (04 Августа 2014)
Просмотров: 11786 | Комментарии: 7 | Рейтинг: 4.3/6 |
Теги: Electronic Arts, Platformer, лов, Лев, Love2D, новичок, платформер, туториал, Лав, LUA
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Второй урок по LOVE2D. Самый простой платформер», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 7
+1-
7 Xakep   (25 Марта 2015 00:26) [Материал]
Xakep
Цитата
if player.y_velocity == 0 then -- мы пробуем узнать, на земле ли герой, если да - прыгаем

Плохая идея, во время прыжка на самой вершине, вертикальная скорость тоже будет равна нулю.

+1-
6 AyzenHard   (26 Ноября 2014 07:39) [Материал]
лучше сделал бы tds

+5-
5 -l33t-h4xx-   (01 Сентября 2014 09:47) [Материал]
-l33t-h4xx-
Цитата
player.y = 0 -- у = 0

У меня болят глаза от этой строчки.

+-3-
3 Folleah   (09 Августа 2014 23:11) [Материал]
FolleahА где, собсна, платформер? biggrin

+-2-
2 Wookie   (06 Августа 2014 16:32) [Материал]
WookieНо уже лучше, чем в прошлый раз.

+-2-
1 Wookie   (06 Августа 2014 16:31) [Материал]
WookieСлишком простой платформер. Слишком.

+-1-
4 stalkerya   (19 Августа 2014 22:52) [Материал]
stalkeryaНачинать надо с малого.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Wintermute Engine
  • Android FPS Maker
  • AndEngine
  • Genesis3D
  • Construct 3
  • Fighter Creator
  • RuneSword
  • ZDaemon
  • S2 Engine
  • OpenSceneGraph
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг