Originally posted by xxxKRIKxxx@Sep 20 2005, 12:37 PM
Да я наверно вас уже достал, но у меня есть ещё несколько вопросов:
1.Почему когда я отважу дальше камеру ( НА КОЛЁСИКО ) всё становится вытенутым, каким-то кривым???Можно ли от этого избавиться???
2.Можно ли сделать так, чтобы когда мой герой убегал к примеру на 10 (метров образна говоря) от кубиков их имена(кубиков) изчезали???
3.И можно ли сделать так, чтобы имена кубиков были написанны на чёрном(тёмном) прозрачном фоне(по размеру с сомо имя)???
|
Нет, еще нет, и не сможешь, мы тут для этого и форум замутили...
на счет первого:
помоему (насколько я помню) это все называется перспективным просмотром, оно и в нормальном состоянии кубик смотрится не как кубик а как паралелограмм, что и придает трехмерность изображению, что если взять кубик и отнести его маленько влево, то мы увидим правый бок, а если маленько вправо то левый...
лично я советую Зумом только приближать чтото, типа в бинокль смотришь, а на счет отдаления, тут лучше позицию самой камеры менять, а иначе все получается как через увеличительное стекло...
на счет второго: есть теорема пифагора (покажу на моем старом примере)

graphics3d 800,600,32,2
setbuffer backbuffer()
camera=createcamera()
positionentity camera,0,20,-50
rotateentity createlight(),0,20,40
cube=createcube()
positionentity cube,0,0,20
scaleentity cube,5,10,5
entitypickmode cube,2
player= CreateCube()
entitycolor player,50,250,50
scaleentity player,3,3,3
entitypickmode player,2
viewer = CreateSphere()
positionentity viewer,0,16,-45
repeat
Pickentity=linepick(EntityX(viewer),EntityY(viewer),EntityZ(viewer), EntityX(player)-EntityX(viewer),EntityY(player)-EntityY(viewer),EntityZ(player)-EntityZ(viewer))
px#=0
py#=0
if EntityInView(player,camera) And Pickentity=player
cameraproject(camera,EntityX(player),EntityY(player),EntityZ(player))
px=ProjectedX()
py=ProjectedY()
endif
if KeyDown(200) Then TranslateEntity player,0,0,1
if KeyDown(208) Then TranslateEntity player,0,0,-1
if KeyDown(205) Then TranslateEntity player,1,0,0
if KeyDown(203) Then TranslateEntity player,-1,0,0
renderworld
; вычисляем расстояние по теореме пифагора
xd=abs(EntityX(player)-EntityX(viewer))
yd=abs(EntityY(player)-EntityY(viewer))
zd=abs(EntityZ(player)-EntityZ(viewer))
r=Sqr(xd*xd+yd*yd+zd*zd)
; проверяем, если оно меньше 200 то показываем имя
if r<200
if px or py Then
Color 255,0,0
Text px,py,"Player"
Color 255,255,255
endif
endif
flip
until KeyHit(1)
end
на счет третьего:
чесно сказать никогда не пробовал, но первое что пришло в голову, юзать свой графический шрифт, или просто просчитывать и рисовать сначала квадратик (прямоугольник) фона а потом на нем текст..
