Воскресенье, 17 Ноября 2024, 17:25

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
2D платформер в BlenderGameEngine
MadMaxДата: Понедельник, 18 Июня 2012, 15:23 | Сообщение # 1
\o
Сейчас нет на сайте
как можно сделать спрайтами платформер? как прикрутить физику? можете скинуть исходники/уроки?

[Gamiron #10] Prison Break
[2D] Revenge [iOS, Android]


BASSДата: Понедельник, 18 Июня 2012, 15:33 | Сообщение # 2
independent developer
Сейчас нет на сайте
ЕМНИП, авторы на официальном сайте писали, что 2d графики в BGE нет, поэтому моделим плоскости и на их основе сооружаем платформер-как-бы-псевдо-2D.

Добавлено (18.06.2012, 15:28)
---------------------------------------------
вот почитайте - основы движка в версии 2.6

Добавлено (18.06.2012, 15:33)
---------------------------------------------
и ещё здесь, вниз полистайте до раздела Game Engine - English, но лучше, чем ничего.


Будь подобен лезвию бритвы: ярким, блестящим, отточенным, но холодным и не показывающим своего истинного цвета.

Сообщение отредактировал BASS - Понедельник, 18 Июня 2012, 15:29
mobipakДата: Понедельник, 18 Июня 2012, 16:03 | Сообщение # 3
Подрывник
Сейчас нет на сайте
Для того, чтобы не было видно плоскости, нужно с помощью Photoshop`а сделать карту непрозрачности и засунуть в 3ds max. А вот насчет анимаций - большой вопрос...
SerenityДата: Понедельник, 18 Июня 2012, 16:28 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Quote (MadMax)
как можно сделать спрайтами платформер? как прикрутить физику? можете скинуть исходники/уроки?

Напишу пока словами. Первое - делается изометрическая камера (нажать Orthografic), изменяя Lens можно приблизить/отдалить. ГГ куб, ходит вперёд/назад, и у него постоянно "играют" два ключа Loc (ближе/дальше от камеры), и Rot Z, это делается для того, чтобы ГГ ходил ровно по плоскости. К кубу ГГ крепится плоскость, которая отображает ГГ и его анимацию, и при движении в другую сторону ключами меняет Scale наоборот (для разворота ГГ). Кадры анимации прорабатываются где угодно, и номер кадра отправляется в код, например такой:

Code

import GameLogic

cont = GameLogic.getCurrentController()
s = cont.owner

c = GameLogic.getCurrentController()

def changeTexture(c):
      import VideoTexture
           
      matID = VideoTexture.materialID(s, "MAmat")
           
      texture = VideoTexture.Texture(s, matID, 0)
      image = GameLogic.expandPath("///textures/"+str(c)+".png")
      if not s.has_key("tex"+str(c)):
            
       s["tex"+str(c)] = VideoTexture.ImageFFmpeg(image)
      texture.source = s["tex"+str(c)]
      s["Texture"] = texture
      s["Texture"].refresh(False)
           

if s.pose==1: s["Frame"] = "stay"

if s.pose==2: s["Frame"] = "strike01"
if s.pose==3: s["Frame"] = "strike02"
if s.pose==4: s["Frame"] = "strike03"
if s.pose==5: s["Frame"] = "strike04"
if s.pose==6: s["Frame"] = "strike05"
if s.pose==7: s["Frame"] = "strike06"

if s.pose==9: s["Frame"] = "run01"
if s.pose==10: s["Frame"] = "run02"
if s.pose==11: s["Frame"] = "run03"
if s.pose==12: s["Frame"] = "run04"
if s.pose==13: s["Frame"] = "run05"

if s.pose==15: s["Frame"] = "jump01"
if s.pose==16: s["Frame"] = "jump02"
if s.pose==17: s["Frame"] = "jump03"
if s.pose==18: s["Frame"] = "jump04"
if s.pose==19: s["Frame"] = "jump05"
if s.pose==20: s["Frame"] = "jump06"

if s.pose==22: s["Frame"] = "oops"

if s.pose==24: s["Frame"] = "paint01"
if s.pose==25: s["Frame"] = "paint02"
if s.pose==26: s["Frame"] = "paint03"
if s.pose==27: s["Frame"] = "paint04"
if s.pose==28: s["Frame"] = "paint05"
if s.pose==29: s["Frame"] = "paint06"
if s.pose==30: s["Frame"] = "paint07"
if s.pose==31: s["Frame"] = "paint08"
if s.pose==32: s["Frame"] = "paint09"
if s.pose==33: s["Frame"] = "paint10"
if s.pose==34: s["Frame"] = "paint11"
if s.pose==35: s["Frame"] = "paint12"
if s.pose==36: s["Frame"] = "paint13"
if s.pose==37: s["Frame"] = "paint14"
if s.pose==38: s["Frame"] = "paint15"
if s.pose==39: s["Frame"] = "paint16"
if s.pose==40: s["Frame"] = "paint17"
if s.pose==41: s["Frame"] = "paint18"
if s.pose==42: s["Frame"] = "paint19"
if s.pose==43: s["Frame"] = "paint20"
if s.pose==44: s["Frame"] = "paint21"

changeTexture(s["Frame"])


Добавлено (18.06.2012, 16:28)
---------------------------------------------
MadMax,

Хотел же сделать позже нормальный пример, но.. видать, терпения у тебя нет, держи
Тут тебе и игра на двоих даже)

И ты, конечно же, понимаешь, что ГГ тебе придётся нарисовать своего smile

Самое главное не написал... ЭТО ДЛЯ 2.49!!!


Сообщение отредактировал Serenity - Понедельник, 18 Июня 2012, 16:35
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг