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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 26.07.2013, 01:51   #1
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Анимация борьбы

До сих пор с анимацией запар не было, но возникла проблемка. Что делать когда дело доходит до драки? т.е. при нажатии кнопки происходит анимация удара, соответсвенно кнопку приходится нажимать не один раз) и как сделать чтобы до завершения первой анимации не начиналась вторая? чтобы всё шло своим чередом.
(Offline)
 
Ответить с цитированием
Старый 26.07.2013, 01:55   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Анимация борьбы

В момент включения анимации куда-нибудь записывать, какую ты включил анимацию.
В следующий раз, когда будешь включать анимацию, то проверь: не та же ли это, которая уже запущена? Если нет, то запустить новую, если да, то ничего не делать.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 01.10.2013, 19:55   #3
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Анимация борьбы

Примитивно по твоему вопросу:

Type player
	Field pl_model%
	Field mouse_click_count%,hit_count%,combo_active_time%
	Field idle_animation%
	Field combo_animation[4]
End Type
создаем тип в котором содержится имя модели, счетчик нажатий мышки, счетчик ударов, и массив анимаций, и время, пока счетчик активен.

Окда?

идем далее.

Function CreatePlayer.player()
	p.player = New player	
		p\pl_model = xLoadAnimMesh("Data\Mesh\Test_Actor.b3d")
	
		p\mouse_click_count% = 0
		p\hit_count% = 0
		p\combo_active_time% = 0
		
		p\idle_animation = xLoadAnimSeq(p\pl_model,"Data\Anim\Fight_Idle.b3d")
		
		p\combo_animation[1] = xLoadAnimSeq(p\pl_model,"Data\Anim\Kombo_Hit_Leg_1.b3d")
		p\combo_animation[2] = xLoadAnimSeq(p\pl_model,"Data\Anim\Kombo_Hit_Leg_1_block.b3d")
		p\combo_animation[3] = xLoadAnimSeq(p\pl_model,"Data\Anim\Kombo_Hit_Leg_1.b3d")
		p\combo_animation[4] = xLoadAnimSeq(p\pl_model,"Data\Anim\Kombo_Hit_Leg_1.b3d")
	Return p
End Function
Выписываем за всю хурму.

как ты видишь все переменные тут обнулены по дефолту.

идем далее.

Function UpdatePlayer()
	For p.player = Each player
		If xMouseHit(1) 
			p\mouse_click_count% = p\mouse_click_count% + 1
				p\hit_count% = p\hit_count% + 1
				If xAnimSeq(p\pl_model)<>p\combo_animation[p\hit_count%] Then 
					xAnimate p\pl_model,3,1,p\combo_animation[p\hit_count%]
				EndIf 
				If p\hit_count% >=4 Then 
					p\hit_count% = 0
					p\mouse_click_count% = 0
				EndIf 	
		End If

		If p\mouse_click_count% <> 0 Then 
			p\combo_active_time% = p\combo_active_time% + 1
		EndIf 

		If p\mouse_click_count% > 0 And p\combo_active_time% > 1000
			p\mouse_click_count% = 0
			p\hit_count% = 0
			p\combo_active_time% = 0
		EndIf 
		
		If Not xAnimating(p\pl_model) Then xAnimate p\pl_model,1,1,p\idle_animation
	Next 
End Function
тут получается как.

Ты тыкаешь мышку. Счетчик нажатий прибавляет еденицу, и счетчик ударов прибавляет еденицу.

вместо циферки в квадратных скобках тут как раз и указана переменная "счетчик ударов" чтоб не гребстись с написанием длинного кода.

в итоге получается что каждое нажатие у тебя сопровождается порядковой анимацией которую ты прописал выше. как только ты тыкаешь кнопку первый раз, запускается счетчик активного времени таймера. как только он доходит до момента истечения, счетчик ударов и кликов обнуляется. соответственно, когда ты тычешь мышку больше скольки то там ударов( хз мож у тя там будет 99Хкомбо) то счетчик опять же обнуляется. это примитивная функция. но думаю, тебе она пригодится, как пища.
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Andvrok (01.10.2013)
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 13:00.


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