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

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

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

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

Ответ
 
Опции темы
Старый 29.09.2006, 21:09   #1
Timon
ПроЭктировщик
 
Регистрация: 12.09.2006
Сообщений: 120
Написано 0 полезных сообщений
(для 0 пользователей)
Печаль как сделать плавные повороты

млин надо сделать плавные поворты, точнее я их уже сделал, только при повышении "плавности" - тормоза ужасные.

делал, кажется, по примеру Diplomat'а.

мож есть другие варианты, а-то казан совсем не варит
(Offline)
 
Ответить с цитированием
Старый 29.09.2006, 22:09   #2
jimon
 
Сообщений: n/a
Re: как сделать плавные повороты

всмысле тормозят ? ...
покажи код
 
Ответить с цитированием
Старый 29.09.2006, 22:48   #3
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: как сделать плавные повороты

Подойдет?
[highlight=blitzbasic]
Graphics3D 800, 600, 16, 2
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam, 0, 20, 0
RotateEntity cam, 90, 0, 0

lit=CreateLight()
PositionEntity lit, 0, 10, 0
RotateEntity lit, 90, 0, 0

Global player=CreateCone (32)
RotateEntity player, 90, 0, 0



Global orient=0 ;0 - up
;1 - right
;2 - down
;3 - left
Global lim=0
Global turnstep=0

While Not KeyHit (1)
moving%=0
If KeyDown (200) Then dir=0: moving=1
If KeyDown (20 Then dir=2: moving=1
If KeyDown (203) Then dir=3: moving=1
If KeyDown (205) Then dir=1: moving=1
If moving Then Move (dir)

RenderWorld
Flip
Wend

Function Move (dir)
sign=0
stat=dir-orient

lim=0
If stat=1 Or stat=-3 ;turn right
lim=90
sign=2
ElseIf stat=-1 Or stat=3 ;turn left
lim=-90
sign=-2
Else
If stat<>0 Then lim=180: sign=2 ;turn around
End If

If lim
TurnEntity player, 0, -sign, 0, 1
turnstep=turnstep+sign
If turnstep=lim Then orient=dir: lim=0: turnstep=0
Else
MoveEntity player, 0, .1, 0 ;move if dir=orient
End If
End Function

End
[/highlight]
(Offline)
 
Ответить с цитированием
Старый 29.09.2006, 23:02   #4
Timon
ПроЭктировщик
 
Регистрация: 12.09.2006
Сообщений: 120
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как сделать плавные повороты

млин, спросил неправильно.
плавный разворот-в смысле плавный PointEntity, ну типа плавное разворачивание одного в сторону другого объекта

а код был с испльзованием for q=0 to 10000 и DeltaYaw(),DeltaPitch().
(Offline)
 
Ответить с цитированием
Старый 29.09.2006, 23:15   #5
jimon
 
Сообщений: n/a
Re: как сделать плавные повороты

for q=0 to 10000
теперь ясно почему тттормозиттт

переделка кода нада
 
Ответить с цитированием
Старый 30.09.2006, 01:04   #6
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: как сделать плавные повороты

я на блитц рр ответил уже. 2 строчки
__________________
(Offline)
 
Ответить с цитированием
Старый 30.09.2006, 01:53   #7
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: как сделать плавные повороты

Graphics3D 800,600
SetBuffer BackBuffer()

obj1=CreateSphere()

obj2=CreateCone()
RotateMesh obj2,90,0,0

p=CreatePlane()
EntityAlpha p,0.5
EntityColor p,255,0,0

cam=CreateCamera()
PositionEntity cam,0,10,-20
RotateEntity cam,45,0,0

l=CreateLight()

PositionEntity obj2,0,0,0
PositionEntity obj1,4,4,4

EntityBox p,-10000,-2,-10000,20000,2,20000
EntityPickMode p,3

While Not KeyDown(1)

If MouseDown(1)
CameraPick(cam,MouseX(),MouseY())
cx#=PickedX()
cz#=PickedZ()
PositionEntity obj1,cx,4,cz
EndIf

curvepointentity(obj2,obj1,5,5)
MoveEntity obj2,0,0,0.3
RenderWorld
Flip

Wend

Function CurvePointEntity(ent1,ent2,speedx#=1,speedy#=1)
dx#=DeltaPitch(ent1,ent2)
dy#=DeltaYaw(ent1,ent2)
If Abs(dx#)>speedx# Then TurnEntity ent1,speedx#*Sgn(dx),0,0 Else TurnEntity ent1,dx,0,0
If Abs(dy#)>speedy# Then TurnEntity ent1,0,speedy#*Sgn(dy),0 Else TurnEntity ent1,0,dy,0
End Function

Собственно ent1 - который надо повернуть, ent2 - на который надо повернуть,speedx - скорость поворота по оси х (за один вызов функции),speedy - скорость поворота по оси Y (за один вызов функции).
(Offline)
 
Ответить с цитированием
Старый 30.09.2006, 13:34   #8
Timon
ПроЭктировщик
 
Регистрация: 12.09.2006
Сообщений: 120
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как сделать плавные повороты

всем БОЛЬШОЙ БОЛЬШОЙ СПАСИБ!!!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать? vadim2 2D-программирование 11 10.01.2008 16:56
Как сделать? mobilla Основной форум 4 05.10.2007 19:15
Как сделать?? _maxim_ 3D-программирование 12 18.11.2006 18:05
Повороты SubZer0 Алгоритмика 3 06.08.2006 19:32
Плавные повороты Guest 3D-программирование 8 08.04.2006 01:52


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


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