Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 24.01.2013, 12:22   #16
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,304
Написано 1,837 полезных сообщений
(для 4,435 пользователей)
Ответ: Смена анимации с помощью KeyDown

#15 тож работает, а вот проверка нажатия сделана через одно место - mav.
Включи дебагер посмотри в чём дело.
__________________
Detected instability. Reload? Yes/No

Настоятельно рекомендую пользоваться кнопкой «Новые Сообщения». Она наверху, по середине.
Если вам кажется что форум пустует, просто нажмите «Новые Сообщения». Вы будете удивлены.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Niburiec (24.01.2013)
Старый 24.01.2013, 13:04   #17
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 14
Написано одно полезное сообщение
Ответ: Смена анимации с помощью KeyDown

Debuger ничего мне не объяснит по русский А как сделать проверку нажатия во втором коде с md2? Может хоть MD2 пойдёт...Сам я не додумаюсь, это точно.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:01   #18
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Смена анимации с помощью KeyDown

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

для того чтоб сделать при нажатии хотьбу а при ненажатии другую анимацию нужно использовать переменные

я использовал эти

Global player_start=0 - игрок начал идти
Global player_stop=1 - игрок остновился
Global player_still=1 - игрок стоит

вот код

Graphics3D 800,600,16,2
SetBuffer BackBuffer
()
cam=CreateCamera()
lite CreateLight(1
MoveEntity lite,5,0,0

;--------------------------------------
m=LoadAnimMesh("officer.b3d")
men=ExtractAnimSeq(m,212,232)
men2=ExtractAnimSeq(m,236,260)
men3=ExtractAnimSeq(m,301,319)

ScaleEntity m,0.1,0.1,0.1
PositionEntity m
,0,0,0,True

PointEntity cam
,m
PositionEntity cam
,0,3,-7

Animate m
,1,0.5,men

Global player_start=сигнал для старта ходьбы
Global player_stop=сигнала для остановки ходьбы
Global player_still=1   ;игрок стоит

Repeat
    
If KeyHit(1End
    UpdateWorld

            player_start
=0;Обнуление сигнала для старта ходьбы
            
            
If KeyHit(200player_start=1:player_stop=-0
            
            
If KeyDown(200)
                
player_still=0
            
Else
                If 
player_still=0 player_stop=1
            
EndIf    
            
            
            
            If 
player_start Animate m,1,0.5,men2,;цифра 6 на конце это transition плавный переход от одной анимации в другую
            
If player_stop Animate m,1,0.5,men,10 :player_still=1:player_stop=0

    
    RenderWorld tween
    Flip

Forever 
может показаться что можно обойтись всего двумя переменными start и stop , например так:

player_start=0;Обнуление сигнала для старта ходьбы
            
            
If KeyHit(200player_start=1:player_stop=-0
            
            
If KeyDown(200)
            
            Else
                
player_stop=1
            
EndIf    
            
            
            
            If 
player_start Animate m,1,0.5,men2,6
            
If player_stop Animate m,1,0.5,men,10:player_stop=
но в таком случае player_stop будет равняться 1 постоянно , если не нажата клавиша вперед а нам нужно чтоб она всплавала единожды, т.е. один кадр, а потом снова становилась 0 .для этого я использую переменную контейер так сказать player_still в которую при первом проигрыше записываем 1 и следовательно если не нажата кнопка вперед проверяем стоит ли игрок If player_still=0 player_stop=1
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Niburiec (24.01.2013)
Старый 24.01.2013, 15:31   #19
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 14
Написано одно полезное сообщение
Ответ: Смена анимации с помощью KeyDown

ГЛОБАЛЬНОЕ СПАСИБО !!! Всё доходчиво и понятно. Я понимаю что многим трудно объяснять как для первоклассника, но куда ж нам тогда деваться? Только к вам - мастерам. Ещё раз спасибо. Теперь всё работает отлично !!!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pepel (24.01.2013)
Старый 24.01.2013, 15:44   #20
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Смена анимации с помощью KeyDown

Сообщение от Niburiec Посмотреть сообщение
ГЛОБАЛЬНОЕ СПАСИБО !!! Всё доходчиво и понятно. Я понимаю что многим трудно объяснять как для первоклассника, но куда ж нам тогда деваться? Только к вам - мастерам. Ещё раз спасибо. Теперь всё работает отлично !!!
да незачто. пиши на форум если будут проблемы. думаю с прыжком и бегом разберешься сам по логике
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 18:28   #21
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 14
Написано одно полезное сообщение
Ответ: Смена анимации с помощью KeyDown

Эх... Тогда ещё вопрос по ходу дела. Опять я всё про тоже. Наверное достал уже своими вопросами? Что не так в этом коде? ...Честное слово, последний вопрос по этой теме и всё.

Graphics3D 800,600,16,1
SetBuffer BackBuffer()
cam=CreateCamera()
lite = CreateLight(1)
MoveEntity lite,5,0,0

;--------------------------------------
m=LoadAnimMesh("officer.b3d")
men=ExtractAnimSeq(m,212,232)
men2=ExtractAnimSeq(m,236,260)
men3=ExtractAnimSeq(m,301,319)

ScaleEntity m,0.1,0.1,0.1
PositionEntity m,0,0,0,True

PointEntity cam,m
PositionEntity cam,0,3,-7

Animate m,1,0.5,men

Global player_start=0
Global player_stop=1
Global player_still=1
Global player_beg=0

Repeat
If KeyHit(1) End
UpdateWorld

player_start=0:player_beg=0

If KeyHit(200) player_start=1:player_stop=-0:Gosub level1
If KeyHit(205) player_beg=1:player_stop=-0:Gosub level2
Goto level3



.Level1
If KeyDown(200)
player_still=0
Else
If player_still=0 player_stop=1
EndIf

If player_start Animate m,1,0.5,men2,6
If player_stop Animate m,1,0.5,men,10 :player_still=1:player_stop=0
Return




.level2
If KeyDown(205)
player_still=0
Else
If player_still=0 player_stop=1
EndIf


If player_beg Animate m,1,0.5,men3,6
If player_stop Animate m,1,0.5,men,10 :player_still=1:player_stop=0
Return

.level3

RenderWorld tween
Flip

Forever
И за одно, как реализовывается одновременное нажатие клавиш вперед+Shift ?
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 18:51   #22
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,304
Написано 1,837 полезных сообщений
(для 4,435 пользователей)
Ответ: Смена анимации с помощью KeyDown

Знаешь, хз У меня с начало странно скопироваться текст, и не хватало пары скобок, вставил, всё работает, скопировал второй раз и скобки были на месте... Бред какой-то...

Код работает, это у тебя блиц балует - серьёзно.

На хрена ты там гоосабы сделал?

Фтопку их. Сделай лучше функции отдельно и ссылайся на них, когда нажимаешь клавиши.

Кнопки - это же просто!

If KeyDown(адин_кнопка)=True ;если ЗАЖАЛИ такую-то кнопку...
	If KeyDown(два_кнопка)=True ;+ ЗАЖАЛИ такую-то кнопку...
		;Тут что-то происходит...
   EndIf
EndIf
или

If KeyDown(адин_кнопка)=True and KeyDown(два_кнопка)=True then ;тут что-то происходит...
__________________
Detected instability. Reload? Yes/No

Настоятельно рекомендую пользоваться кнопкой «Новые Сообщения». Она наверху, по середине.
Если вам кажется что форум пустует, просто нажмите «Новые Сообщения». Вы будете удивлены.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 20:49   #23
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Смена анимации с помощью KeyDown

короче написал код. пришлось час посидеть. но только толку от этого кода?. ты всеравно сути не поймешь. ты лучше с чегонить попроще начни, главное принцип понять и разбирать код. а не тупо копипастить

просто тут довольно сложный код . т.к. если делать как в играх то тут много ньюансов - например если сначала зажать шифт а потом вперед он сразу должен бежать, если зажать вперед и потом зажимать и отпускать шифт он должен то идти то бежать и т.д.

Graphics3D 800,600,16,2
SetBuffer BackBuffer
()
cam=CreateCamera()
lite CreateLight(1
MoveEntity lite,5,0,0

;--------------------------------------
m=LoadAnimMesh("officer.b3d")
men=ExtractAnimSeq(m,212,232)
men2=ExtractAnimSeq(m,236,260)
men3=ExtractAnimSeq(m,301,319)

ScaleEntity m,0.1,0.1,0.1
PositionEntity m
,0,0,0,True

PointEntity cam
,m
PositionEntity cam
,0,3,-7

Animate m
,1,0.5,men

Global player_start_go=0
Global player_start_run=0
Global player_go=0
Global player_run=0
Global player_stop=
Global player_still=


Repeat
If KeyHit(1End
UpdateWorld

down_up
KeyDown(200)
hit_up=KeyHit(200)
down_shift=KeyDown(54)

player_start_go=0
player_start_run
=0

If hit_up player_start_go=1


If   down_up And down_shift
    player_run
=1
Else
    If   
player_run=And down_up=And player_go=And player_still=0 player_still=1:    player_stop=1:player_run=0
    
If   player_run=And down_up And player_still=0 player_start_go=1:    player_run=0
EndIf



If 
player_run=And player_still=And player_go=And  player_start_go=0 player_still=1:player_stop=1
If player_run=And (player_still=Or player_go=1player_start_run=1:player_go=0:player_still=0


If   down_up

    
If down_shift
        player_go
=0
        player_still
=0
    
Else
        
player_go=1
        player_still
=0
    
EndIf

Else
player_go=0
EndIf



If 
player_start_go Animate m,1,0.5,men2,6
If player_start_run Animate m,1,0.5,men3,5
If player_stop Animate m,1,0.5,men,10

player_stop
=0

RenderWorld tween
Text 0
,0,"player_run  "+player_run
Text 0
,10,"player_go  "+down_up
Flip

Forever 
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pepel за это полезное сообщение:
Arton (24.01.2013), Niburiec (24.01.2013)
Старый 24.01.2013, 21:08   #24
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 14
Написано одно полезное сообщение
Ответ: Смена анимации с помощью KeyDown

Если честно, я не ожидал что понадобится столько времени... Но вам, уважаемый, нужно памятник при жизни ставить за то что имеете терпение и не отказываете в помощи. Вобщем, спасибо за полный код. Теперь у меня есть над чем посидеть и разобраться. Постараюсь, по крайней мере...Однако, на мой взгляд, этот вопрос освещён полностью и у других будет возможность заглянуть как это делается
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 21:32.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com