forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Новичёк не понимает... Помогите. (http://forum.boolean.name/showthread.php?t=4280)

H@NON 30.08.2007 16:01

Re: Новичёк не понимает... Помогите.
 
Вот допустим у тебя есть переменная speed#, от которой зависит скорость перемещения твоей машинки. Просто создай/загрузи картинку, которая будет у тебя индикатором скорости, тобишь стрелка, и поворачивай эту картинку за счет переменной speed#. А если стрелка будет не достаточно поворачиваться или наоборот, слишком быстро, то просто при повороте картинки умножай перменную speed# на нужное тебе значение(koef#). Значение будет вальироваться от 0 до 1 при уменьшении скорости вращения ,и от 1 до бесконечности(условно) при увеличении скорости вращения.

graphics3d ...
...
img_strelka=loadimage("strelka.png",4)
...
;главный цикл
repeat
...
renderworld()
if speed#>0
speed_rot#=speed#*0.1
rotateimage img_strelka, speed_rot#
endif
drawimage img_strelka, x, y, [frame]
flip
until keyhit(1)
end

IGR 30.08.2007 16:09

Re: Новичёк не понимает... Помогите.
 
rotateimage это глюковато !!
лучше уже создать простой tynbnb ? привязать к камере в оприделенной позиции и его поварачевать:

strelka = createcube(camera)
scaleentity strelka,scl#,scl#*5,scl#; подбираем значения
positionentity strelka x,y,z; подбираем значения

потом в цыкле
if speed#>0
speed_rot#=speed#*0.1
rotateentity strelka, speed_rot#
endif

H@NON 30.08.2007 16:12

Re: Новичёк не понимает... Помогите.
 
Тогда уж можно и биллбоардом сделать.
ЗЫЖ ашибочка: Не rotateentity strelka, speed_rot#, а :rotateentity strelka, 0,0,speed_rot#

И еще надо использовать EntityOrder, так как другие объекты могут загородить стрелку, поэтому надо рендерить ее последней. Типо так EntityOrder strelka, 1000.

Данил 30.08.2007 16:20

Re: Новичёк не понимает... Помогите.
 
ну... я сделал так, как понял... надо было объяснить, для чего куча всякого текста ^_^ .. я сделал то, что понял...

Cheetos 30.08.2007 16:54

Re: Новичёк не понимает... Помогите.
 
А почему когда я запускаю программу у меня пишет "Texture does not exist" и выделяет первые строчки по прикреплению текстуры к обьекту или размеру текстуры?

IGR 30.08.2007 16:59

Re: Новичёк не понимает... Помогите.
 
положи текстуры в ту же папку где модель и всё будет работать !!

H@NON 30.08.2007 17:01

Re: Новичёк не понимает... Помогите.
 
Потому что тут приведены лишь куски кода, а то как из них собрать работающее приложение твоя задача. Тут главное понять что тебе не без усилий пытались объяснить, так что уж не обидь =)))

Cheetos 30.08.2007 17:08

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от IGR
положи текстуры в ту же папку где модель и всё будет работать !!

Всё лежит в одной папке,
просто это не работает переделаный код который дал мне Данил.

IGR 30.08.2007 17:24

Re: Новичёк не понимает... Помогите.
 
Цитата:

просто это не работает переделаный код который дал мне Данил
О, скоро сам всё делать будеш, и без помощи других !! :)

avel 30.08.2007 17:30

Re: Новичёк не понимает... Помогите.
 
сначала хотел исправить твой код, но потом посмотрел, сколько там типичных "новичковских" ошибок и решил написать свой. вот, тут все работает и прокомментировано, разбирайся:
Код:

Graphics3D 1024,768,32,1
;загружаем шрифт:
font=LoadFont(courier ,16)
SetFont font
;скорости объектов:
Global speed1#
Global speed2#
;типы для столкновений:
Const Tpln=1, Tc1=2, Tc2=3
;создаем модели для столкновений:
c1=CreateCube()
EntityType c1,Tc1
PositionEntity c1,3,3,3
c2=CreateCube()
PositionEntity c2,-3,3,3
EntityType c2,Tc2
;скалируем их в соответствии с 3Dмоделями:
ScaleEntity c1,1,1,2; тут ты поставиш свои значения
ScaleEntity c2,1,1,2; тут тоже
;делаем их невидимыми: (пока убрал, чтобы было за чем наблюдать)
;EntityAlpha c1,0
;EntityAlpha c2,0
;загружаем меши: (потом сам допишешь)
;m1=LoadMesh("")
;ScaleMesh m1,,,
;m2=LoadMesh("")
;ScaleMesh m2,,,
;создаем камеры:
cam1=CreateCamera()
PositionEntity cam1,3,5,-10
CameraClsColor cam1,100,100,200
CameraViewport cam1,0,0,GraphicsWidth(),GraphicsHeight()*0.5
cam1targ=CreatePivot(c1)
PositionEntity cam1targ,0,5,-10
cam2=CreateCamera()
PositionEntity cam2,-3,5,-10
CameraClsColor cam2,100,100,200
CameraViewport cam2,0,GraphicsHeight()*0.5,GraphicsWidth(),GraphicsHeight()*0.5
cam2targ=CreatePivot(c2)
PositionEntity cam2targ,0,5,-10
;создаем план:
pln=CreatePlane()
EntityType pln,Tpln
;создаем текстуру для плана (у тебя этого куска кода не будет, т. к. ты ее грузишь из файла)
plntex=CreateTexture(256,256)
SetBuffer TextureBuffer(plntex)
Color 150,150,50
Rect 0,0,256,256
Color 50,150,50
Rect 32,32,192,192
;текстурим план:
ScaleTexture plntex,3,3
EntityTexture pln,plntex
;присваиваем нужный буффер и цвет:
SetBuffer BackBuffer()
Color 200,50,50
;прописываем коллизии:
Collisions Tc1,Tc2,2,3
Collisions Tc2,Tc1,2,3
Collisions Tc1,Tpln,2,3
Collisions Tc2,Tpln,2,3
;пошел главный цикл:
Repeat
;двигаем первый объект
If KeyDown(17) Then
        If speed1#<= 0.5 Then
                speed1#=speed1#+0.01
        EndIf
EndIf
If KeyDown(31) Then
        If speed1#>= -0.2 Then
                speed1#=speed1#-0.01
        EndIf
EndIf
speed1#=speed1#*0.99
If KeyDown(30) Then TurnEntity c1,0,1,0
If KeyDown(32) Then TurnEntity c1,0,-1,0
MoveEntity c1,0,0,speed1#
TranslateEntity c1,0,-1,0
;двигаем второй объект
If KeyDown(200) Then
        If speed2#<= 0.5 Then
                speed2#=speed2#+0.01
        EndIf
EndIf
If KeyDown(208) Then
        If speed2#>= -0.2 Then
                speed2#=speed2#-0.01
        EndIf
EndIf
speed2#=speed2#*0.99
If KeyDown(203) Then TurnEntity c2,0,1,0
If KeyDown(205) Then TurnEntity c2,0,-1,0
MoveEntity c2,0,0,speed2#
TranslateEntity c2,0,-1,0
;двигаем 3Dмодели (пока отключил т. к. их нет)
;PositionEntity m1,EntityX(c1,1),EntityY(c1,1),EntityZ(c1,1)
;RotateEntity m1,EntityPitch(c1,1),EntityYaw(c1,1),EntityRoll(c1,1)
;PositionEntity m2,EntityX(c2,1),EntityY(c2,1),EntityZ(c2,1)
;RotateEntity m2,EntityPitch(c2,1),EntityYaw(c2,1),EntityRoll(c2,1)
;двигаем камеры:
dx1#=EntityX( cam1targ,True )-EntityX( cam1 )
dy1#=EntityY( cam1targ,True )-EntityY( cam1 )
dz1#=EntityZ( cam1targ,True )-EntityZ( cam1 )
TranslateEntity cam1,dx1*.1,dy1*.1,dz1*.1
PointEntity cam1,c1
dx2#=EntityX( cam2targ,True )-EntityX( cam2 )
dy2#=EntityY( cam2targ,True )-EntityY( cam2 )
dz2#=EntityZ( cam2targ,True )-EntityZ( cam2 )
TranslateEntity cam2,dx2*.1,dy2*.1,dz2*.1
PointEntity cam2,c2
;обновляем сцену:
UpdateWorld()
RenderWorld()
;пишем скорость:
Text GraphicsWidth()-100,30,"speed: "+Int(speed1#*20)+"km/ч"
Text GraphicsWidth()-100,GraphicsHeight()*0.5+30,"speed: "+Int(speed2#*20)+"km/ч"
Flip
Until KeyHit(1)
End


IGR 30.08.2007 17:36

Re: Новичёк не понимает... Помогите.
 
Цитата:

Text GraphicsWidth()-100,30,"speed: "+Int(speed1#*20)+"km/ч"
Text GraphicsWidth()-100,GraphicsHeight()*0.5+30,"speed: "+Int(speed2#*20)+"km/ч"
зачем Int ??
может надо Str ??
или вообще ненадо !!

Данил 30.08.2007 17:37

Re: Новичёк не понимает... Помогите.
 
Действительно... Cheetos, если мы будем ебе просто исправлять код, то ты так никогда не научишься... тебе надо понять код, а ты, как я вижу, не очень понимаешь, что делаешь .... Задавай вопросы, мы ответим, но ты должен не просто вписать код, ты должен его понять его...

Я нехочу тея обидеть...

Cheetos 30.08.2007 17:40

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от Данил
Действительно... Cheetos, если мы будем ебе просто исправлять код, то ты так никогда не научишься... тебе надо понять код, а ты, как я вижу, не очень понимаешь, что делаешь .... Задавай вопросы, мы ответим, но ты должен не просто вписать код, ты должен его понять его...

Я нехочу тея обидеть...

Я понял, но когда мне расписывают код то я начинаю понимать что к чему относится.
СПАСИБО ВСЕМ КТО МНЕ ПОМОГАЕТ.

Cheetos 30.08.2007 17:44

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от avel
сначала хотел исправить твой код, но потом посмотрел, сколько там типичных "новичковских" ошибок и решил написать свой. вот, тут все работает и прокомментировано, разбирайся:
Код:

Graphics3D ...

Большое спасибо!!!
Я теперь более мение разобрался и начинаю толко доробатывать, ну там вставлють модели, и т.д.
А вот у тебя стоит ограничение по скорости, а в какой команде ты меняеш ограничение? Если не трудно ответить.

moka 30.08.2007 18:19

Re: Новичёк не понимает... Помогите.
 
Цитата:

Сообщение от Cheetos
А вот у тебя стоит ограничение по скорости, а в какой команде ты меняеш ограничение? Если не трудно ответить.

Прочитай внимательно код, и будет понятно, прежде чем задать вопрос постарайся сам найти ответ, так наберёшся опыта, и уже не возникнут такие вот вопросики. ;)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot