[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Вид от третьего лица
P@S@fДата: Вторник, 02 Декабря 2008, 23:28 | Сообщение # 1
Начинающий
Группа: Пользователи
Сообщений: 3
Награды: 0
Замечания: 0%
Статус:
Что я хочу сделать: Свободно-привязанный вид. То-бишь что бы камера могла свободно двигаться вокруг объекта по полу-сферической траектории(не знаю правильно-ли выразился lumped ), то-есть не проходила сквозь террейн.
Что я уже сделал: Всё, кроме коллизии с террейном, вернее я её сделал, но получаю нежелательный результат. Код:
Code

Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()
Const player=1,pol=2,camera=3
marsohod=LoadMesh("marsohod.3ds")
center=CreatePivot(marsohod); Создал точку слежения камеры, прицепил ее к марсоходу.
cam=CreateCamera(center); Создал камеру, заставил ее следить за точкой слежения.
light=CreateLight()
mars=CreateTerrain(1024)
marsmap=LoadTexture("marsmap_2500x1250.jpg")
ScaleTexture marsmap,2500,1250
EntityTexture mars,marsmap
RotateEntity light,90,0,0
PositionEntity cam,0,20,-50
PositionEntity mars,0,-1,0
EntityColor marsohod,111,90,59
EntityType marsohod,player
EntityType mars,pol
EntityType cam,camera
Collisions player,pol,2,2
Collisions camera,pol,2,2
Repeat
TurnEntity center,MouseYSpeed(),0,0
TurnEntity center,0,-MouseXSpeed(),0,True
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
If Not KeyDown(1) MoveEntity marsohod,0,-.5,0
If KeyDown(200) MoveEntity marsohod,0,0,1
If KeyDown(208) MoveEntity marsohod,0,0,-1
If KeyDown(203) TurnEntity marsohod,0,2,0
If KeyDown(205) TurnEntity marsohod,0,-2,0
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End

Что не получилось: При коллизии камеры с террейном, она продолжает поворачиваться по оси X вместе с точкой слежения, то-есть камера, в принципе, остается на месте, но продолжает поворачиваться и когда ее поднимаешь по оси Y видишь такую лабуду, что кажется камера перестала быть связана с точкой слежения.
Вот что происходит: http://pasaf.narod.ru/files/camera.wmv (200 кб)
Собственно, вопрос: Каким образом можно ограничить движение камеры, так что бы она не проходила сквозь террейн, или как сделать так, что бы при коллизии с террейном камера переставала поворачиваться по оси X(пробовал ограничивать угол поворота - не катит, хотя хз может криво ограничивал)?
Товарищи, пожалуйста, помогите! bash


Сообщение отредактировал P@S@f - Вторник, 02 Декабря 2008, 23:50
 
ПрохожийДата: Среда, 03 Декабря 2008, 02:02 | Сообщение # 2
Группа: Гости





P@S@f, А ты просто ставь камеру после коллизии и смещения , на её предидущее местоположение,
проверь если нет коллизиии с терраином, то PositionEntity cam,0,20,-50, ставишь назад по её локальным координатам.хотя тоже не выход.
 
P@S@fДата: Среда, 03 Декабря 2008, 19:05 | Сообщение # 3
Начинающий
Группа: Пользователи
Сообщений: 3
Награды: 0
Замечания: 0%
Статус:
На сколько я понимаю, мне нужно что бы при коллизии камеры с террейном переставал вращаться пивот(точка слежения) по оси Х. Так вот каким образом это можно осуществить?
 
  • Страница 1 из 1
  • 1
Поиск: