Показать сообщение отдельно
Старый 30.01.2010, 23:38   #1
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Поведение камеры

Здравстуйте. Итак возник вопрос с поведением камеры.

Суть такова. Режим 3Д, вид сбоку. Нужно что бы камера вела себя следующим образом: просто двигалась за курсором на небольшое расстояние по Х и Y. Вродь всё просто, но что-то у меня мозг не соображает толком.

Сделал так:

;создание камеры
Player\Entity = CreatePivot()
Player\CamPivot = CreatePivot(Player\Entity)
PositionEntity Player\CamPivot,0,50,0
Camera = CreateCamera(Player\CamPivot)
PositionEntity Camera,0,0,-200
TurnEntity Camera,10,0,0

;обновление камеры

	If ( MouseY() > 400 ) And  ( EntityY(Camera) > -100 ) Then
		If EntityY(Camera) > -(MouseY() - 400) Then 
			MoveEntity Camera,0,-CamSpeed,0
		End If 	
	End If


	If ( MouseY() < 200 ) And  ( EntityY(Camera) < 100 ) Then
		If EntityY(Camera) < -(MouseY() - 200) Then	
			MoveEntity Camera,0,CamSpeed,0
		End If 
	End If

	If EntityY(Camera) < 0 Then
		If EntityY(Camera) < -(MouseY() - 400) Then
			MoveEntity Camera,0,CamSpeed,0
		End If
	End If

	If EntityY(Camera) > 0
		If EntityY(Camera) > -(MouseY() - 200) Then	
			MoveEntity Camera,0,-CamSpeed,0
		End If
	End If 	




	If ( MouseX() > 600 ) And  ( EntityX(Camera) < 100 ) Then
		If EntityX(Camera) < (MouseX() - 600) Then 
			MoveEntity Camera,CamSpeed ,0,0
		End If 	
	End If

	If ( MouseX() < 200 ) And  ( EntityX(Camera) > -100 ) Then
		If EntityX(Camera) > (MouseX() - 200) Then 
			MoveEntity Camera,-CamSpeed ,0,0
		End If 	
	End If

	If EntityX(Camera) > 0 Then
		If EntityX(Camera) > (MouseX() - 600) Then
			MoveEntity Camera,-CamSpeed ,0,0
		End If 
	End If 

	If EntityX(Camera) < 0
		If EntityX(Camera) < (MouseX() - 200) Then 
			MoveEntity Camera,CamSpeed ,0,0
		End If
	End If
Но работает это не совсем корректно. Тоесть камера перемещается не настолько плавно как хотелось бы...

Подскажите способ реализации такой камеры...
(Offline)
 
Ответить с цитированием