Показать сообщение отдельно
Старый 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)