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

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

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

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

Ответ
 
Опции темы
Старый 10.03.2006, 00:05   #1
Gnom
AnyKey`щик
 
Регистрация: 07.03.2006
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Хорошо

код
;============================================

DefScreenSizeX	=800
DefScreenSizeY=600
DefScreenColorMode=32

Graphics3D DefScreenSizeX, DefScreenSizeY, DefScreenColorMode, 0
SetBuffer BackBuffer()

;============================================

Global player
Global camera
Global camPivot
Global camDest# = 24

;============================================

Function SpawnPlayer()
	px# =0
	py# =0
	pz# =0
	
	player = LoadAnimMesh ("data\models\tmp.b3d")
	camPivot=CreateCamera(player)
	camera=CreateCamera(camPivot)
	PositionEntity player, px#, py#, pz#
	PositionEntity camera, 0, camDest#, camDest# *-1
	
End Function 

Function GroundPlane();test

ground = CreatePlane()
PositionEntity ground, 0, 0, 0
grass = LoadTexture("data\textures\ground01.tga")
ScaleTexture grass, 10, 10
EntityTexture ground, grass

End Function

Function PlayerControl() 
V#=0.5
u#=0
camDest# =camDest# - MouseZSpeed() 

	If camDest# <4 Then camDest# =16 
 If camDest# >64 Then camDest# =32 

TurnEntity camPivot, MouseYSpeed(),0,0
TurnEntity camPivot, 0,-MouseXSpeed(),0

	If KeyDown(200) Then MoveEntity player, 0, 0, 1	
	If KeyDown(208) Then MoveEntity player, 0, 0, -1

 If KeyDown(203) Then TurnEntity player, 0, 5, 0 
	If KeyDown (205) Then TurnEntity player, 0, -5, 0 
	
MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5

PositionEntity camera, 0, camDest# , camDest# *-1
PointEntity camera, player

End Function

;============================================

GroundPlane()
SpawnPlayer()

;============================================
While Not KeyHit(1)=1
PlayerControl()
RenderWorld()
Print EntityPitch#(camPivot)
Print EntityYaw#(camPivot)
Print EntityRoll#(camPivot)
Flip
Wend
End
Проблема:
камера должна вращаться вокруг игрока- она это делает, но при определенном повороте по одной из осей начинается непредсказуемое вращение....
Пробовал ставить ограничения разные на угол поворота- получается резкий скачек при вращении камерой- не красиво.
Подскажите, пожалуста, как сделать нормальное вращение камеры вокруг игрока?
(Offline)
 
Ответить с цитированием
Старый 10.03.2006, 00:14   #2
jimon
 
Сообщений: n/a
думаю тебе поможет команда entityparent
 
Ответить с цитированием
Старый 10.03.2006, 00:31   #3
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Меняй управление камерой.
Например на такое:

mxs# = MouseXSpeed()/pop
 *mys# = MouseYSpeed()/pop
If mys>4 mys=4
If mys<-4 mys=-4
 *
 *dest_xang# = dest_xang + mys
 *dest_yang# = dest_yang - mxs
	
 *xang# = CurveValue (xang, dest_xang, 10)
 *yang# = CurveValue (yang, dest_yang, 10)
 * * * * * * 
 * * *If xang>80 xang=80:dest_xang=80
 If xang<-80 xang=-80:dest_xang=-80 * * * * *
 * * * MoveMouse xcur,ycur
RotateEntity cam,xang,yang,0


Function CurveValue#(current#,destination#,curve)
	current#=current#+((destination#-current#)/curve)
	Return current#
End Function
Ну естественно приспособь для своей специфики. Так как выдаются переменные на управление камерой, то очень легко их ограничивать и тд.
"Резиновость" камеры последний аргумент в функции CurveValue
__________________
(Offline)
 
Ответить с цитированием
Старый 10.03.2006, 00:31   #4
Gnom
AnyKey`щик
 
Регистрация: 07.03.2006
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
не очень хорошо понимаю, чем она мне поможет, если честно...
она вроде как прикреплялка работает, не?
у меня проблема скорее с ограничениями по осям- из-за алгоритмов, которые я использую при вращении камеры происходит типа "перекручивания", после которого движение камеры уже идет не как задуманно...
(Offline)
 
Ответить с цитированием
Старый 11.03.2006, 00:05   #5
Gnom
AnyKey`щик
 
Регистрация: 07.03.2006
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Спасиб. за советы, но я сделал свой хак уже)
camDest# =camDest# - MouseZSpeed()
camHel# =camHel# + MouseYSpeed()

	If camDest# <16 Then camDest# =16
	If camDest# >64 Then camDest# =64
	If camHel# <1 Then camHel# =1
	If camHel# >63 Then camHel# =63 

camPos# = Sqr ((camDest# *camDest#)-(camHel# * camHel#))

	If KeyDown(200) Then MoveEntity player, 0, 0, 1	
	If KeyDown(208) Then MoveEntity player, 0, 0, -1

 If KeyDown(203) Then TurnEntity player, 0, 5, 0 
	If KeyDown (205) Then TurnEntity player, 0, -5, 0 
	
MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5

TurnEntity camPivot, 0, -MouseXSpeed(), 0
PositionEntity camera, 0, camHel#, camPos# *-1
PointEntity camera, player
Через теорему Пифагора......)))
(Offline)
 
Ответить с цитированием
Старый 11.03.2006, 01:05   #6
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Меня умиляют эти посты...TurnEntity вообщето для поворота вокруг СОБСТВЕННОЙ оси... что это значит? Это значит, что поворачиваясь вокруг собственной оси например Z вы поворачиваете и две остальные оси, и как результат "непредвиденное" или "глючное" поведение камеры... Если вам нужны глобальные повороты юзайте RotateEntity, или TurnEntity относительно родителя...

в хелпе всё есть..хотя и довольно сжато..
__________________
(Offline)
 
Ответить с цитированием
Старый 11.03.2006, 11:16   #7
Gnom
AnyKey`щик
 
Регистрация: 07.03.2006
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Originally posted by SBJoker@11.3.2006, 1:05
Меня умиляют эти посты...TurnEntity вообщето для поворота вокруг СОБСТВЕННОЙ оси... что это значит? Это значит, что поворачиваясь вокруг собственной оси например Z вы поворачиваете и две остальные оси, и как результат "непредвиденное" или "глючное" поведение камеры... Если вам нужны глобальные повороты юзайте RotateEntity, или TurnEntity относительно родителя...

в хелпе всё есть..хотя и довольно сжато..
Жалко, ты не вразумил меня немного раньше...)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глюки камеры блик и вращении её вокруг перса Dark_Fox 3D-программирование 16 26.09.2010 23:34
Глюки VertexX и иже с ними. ABTOMAT 3D-программирование 6 20.09.2007 20:08
Глюки с коллязиями. ABTOMAT 3D-программирование 20 09.09.2007 23:52
Глюки с рендером в текстуру Мах-7! Diplomat 3D Моделирование 5 18.04.2006 23:41


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


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