[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Spidy, turBO  
Форум мира Blitz3D » Язык Blitz3D » Проекты на Blitz3D » проблема с управлением (не пойму в чем дело...)
проблема с управлением
defaultNick4188Дата: Четверг, 07.10.2010, 13:11 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Снова доброго времени суток, столкнулся с очередной проблемкой на этот раз с управлением. Анимация персонажа проигрывается только когда зажата кнопка мышки.Тоесть персонаж передвигается к выбранной точке внезависимости нажата кнопка или нет, но когда кнопку отпускаю анимация отключается и персонаж как будто скользить. вот кусочек кода - помогите разобраться, по возможности исправьте пожалуйста.

m = False
s = False
f = True

If MouseDown(2) And s = False
m = True
f = False
End If

If f = False And s= False
If MD2AnimTime(player) < 32 Or MD2AnimTime(player) > 46 Then
AnimateMD2 player,1,0.3,32,46
End If
End If

If m = False
If MD2AnimTime(player)
AnimateMD2 player,1,0.3,0,30
End If
End If

Сообщение отредактировал defaultNick4188 - Четверг, 07.10.2010, 13:17
 
SpidyДата: Четверг, 07.10.2010, 15:11 | Сообщение # 2
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
У меня такая версия.

Когда у тебя не нажата клавиша мышки скорее всего постоянно выполняется кусок кода

Code
If m = False
If MD2AnimTime(player)
AnimateMD2 player,1,0.3,0,30
End If
End If

и соответственно постоянно запускается AnimateMD2 player,1,0.3,0,30 и ты видишь все время кадр 0


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
defaultNick4188Дата: Четверг, 07.10.2010, 19:50 | Сообщение # 3
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
И каким образом это изменить? Просто я с управлением мышкой уже неделю мучаюсь,все примеры блицевские перевернул, пол интернета перелопатил...Так не долго и до психушки дожить )))
А если серьезно - помогите с этим кодом а то уж сил нету мозг сплавился...эх я алигархом бы пошел, пусть меня научат wacko
 
Reks888Дата: Четверг, 07.10.2010, 22:50 | Сообщение # 4
ламер
Группа: Пользователи
Сообщений: 29
Награды: 1
Репутация: 4
Статус: Offline
Во-первых избався от содержательных названий переменных f,m,s и замени их нормальными именами. Во-вторых здесь значительно легче будет использовать так званую систему эвентов:
Приведу в качестве примера код из моей старой игры - написано на GML, но, надеюсь, смысл и так дойдет
http://www.mediafire.com/?ke48jlajb9zpl41
Оставил бы код здесь, но написано что "Текст сообщения превышает допустимый лимит"

В общем существует некая переменная state которая содержит текущее действие. В ходе прохода логики мы определяем какое действие производит персонаж, и, собственно, какую анимацию производить.
Если я прыгаю и подо мной земля и скорость по вертикали<0 то я стою на земле
Если я нажал клавишу влево, и я стою на земле, то я иду влево
Если я нажал клавишу влево, и я не стою на земле, то я прыгаю, смотрю влево
...
Select state
Case я иду влево
"Играем анимацию ходьбы влево"
"Передвигаем персонажа влево"
Case я прыгаю, смотрю влево
"Играем анимацию полета с поворотом влево"
"..."
End select
С такой системой значительно легче подставлять новые действия, для этого почти не нужно изменять код.

 
defaultNick4188Дата: Пятница, 08.10.2010, 00:25 | Сообщение # 5
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
спасибо, что-то примерно уловил.попробую поэксперементировать.

всеравно ничего не выходит,видимо я криворукий, пример был бы незаменим сейчас, лучше 1 раз увидеть. смысл я уловил - а воплотить невыходит, пытаюсь реализовать это анимация вообще перестает проигрываться.
ребят кто может спасите примером каким угодно, лижь бы это разъяснить. это управление мушкой меня уже просто с ума свело wacko

Добавлено (08.10.2010, 00:25)
---------------------------------------------
все никак не спится из-за мышки этой...не реагирует вообще ...
Case if MouseDown(2)
AnimateMD2 player,1,0.3,32,46
Default
End select

ноль эмоций. вы уж извените за столь великую глупость мою, но никак не могу врубиться...люди добрые научите объясните покажите пожалуйста cool

еще раз извеняюсь за напряги...просто искать помощи негде все примеры стандартные перебраны интернет по возможным запросам прошарен...вообщем катастрофа вселенского масштаба...

Сообщение отредактировал defaultNick4188 - Четверг, 07.10.2010, 23:30
 
Reks888Дата: Пятница, 08.10.2010, 21:00 | Сообщение # 6
ламер
Группа: Пользователи
Сообщений: 29
Награды: 1
Репутация: 4
Статус: Offline
Case if MouseDown(2) не пишут. Пишут Case MouseDown(2)
Во-первых попробуй поставить Stop после "Case MouseDown(2)". Если остановится программа после нажатия клавиши мыши, то что-то не так с анимацией, смотри советы дальше. Если не остановится, то где-то ты облажался и до этого Case просто программа не доходит.
Помним что AnimateMD2 используется только для моделей с расширением .md2 которые загружены с помощью LoadMD2.
Если мне не изменяет память, то если грузишь модель другого формата с помощью LoadAnimMesh, то нужно использовать команду Animate.
Возможны проблемы, связанные непосредственно с моделькой, попробуй сначала сэмпл прилагающийся к мануалу к AnimateMD2, а потом попробовать заменить модельку player'a блицевской горгульей(По дефолту находится в "%BlitzPath%/media/gargoyle/gargoyle.md2")

Рекомендую забить на анимации и сделать всю игру из кубиков(всмысле заменить все модели кубиками) поскольку ты ещё не знаешь блица в общем и целом, и зря суешься в дебри анимационных багов.

Сообщение отредактировал Reks888 - Пятница, 08.10.2010, 21:05
 
defaultNick4188Дата: Пятница, 08.10.2010, 21:04 | Сообщение # 7
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
моделька мд2 с ней все нормик. про апдейт ворлд тоже не забыто. я б не поленился скинул бы код всего проекта - но это не получится, так как он занимает 46 вордовских листов

Добавлено (08.10.2010, 21:04)
---------------------------------------------
управление с клавиатуры - нормально, но когда пытаюсь сделать управление мышкой, то на первом кадре стопорится анимация то вообще не проигрывается, я просто не знаю как это реализовывать, и набраться опыта с этим просто негде

 
Reks888Дата: Пятница, 08.10.2010, 21:07 | Сообщение # 8
ламер
Группа: Пользователи
Сообщений: 29
Награды: 1
Репутация: 4
Статус: Offline
Тогда замени MouseDown на MouseHit, поскольку MouseDown будет передавать сигнал к анимации все время когда зажата мышь
 
defaultNick4188Дата: Пятница, 08.10.2010, 21:09 | Сообщение # 9
ламер
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Reks888 и прости еще за вопрос, поясни разницу между if MouseDown(2) и MouseDown(2)
еще раз извеняюсь за тупые вопросы

Добавлено (08.10.2010, 21:09)
---------------------------------------------
спасибо, сейчас выгуляю животных, попробую и отпишусь что получится. надеюсь все выйдет

 
Reks888Дата: Пятница, 08.10.2010, 21:15 | Сообщение # 10
ламер
Группа: Пользователи
Сообщений: 29
Награды: 1
Репутация: 4
Статус: Offline
Case MouseDown(2) правильно
Case if MouseDown(2) неправильно
Case'ы разворачиваются в If'ы, тоесть после компилирования твой код выглядит где-то так
If If MouseDown(2)
Практически Case=If


Сообщение отредактировал Reks888 - Пятница, 08.10.2010, 21:16
 
Форум мира Blitz3D » Язык Blitz3D » Проекты на Blitz3D » проблема с управлением (не пойму в чем дело...)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: