|
Болтовня Разговоры на любые темы (думайте, о чем пишите) |
16.12.2005, 00:04
|
#61
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
тенк'с попробуем
|
(Offline)
|
|
17.12.2005, 05:04
|
#62
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
Скажите кто нить, каким образом организовать взаимодействие мышки на объект
(при наведении.... и т.д.)
|
(Offline)
|
|
17.12.2005, 13:52
|
#63
|
|
получаеш координаты мышки
myvar_x = MouseX()
myvar_y = MouseY()
ну и оперируеш
|
|
|
18.12.2005, 01:19
|
#64
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
Спасибо, но как раз до ентого я сама, а дальше че с координатами делать ? как или чем проверить попадание в объект ?
|
(Offline)
|
|
18.12.2005, 07:37
|
#65
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
млин фсё хотел уже пробовать игрушку креетить, вышел облом я не смог сделать поле 8х8 объемное ну вроде как шахм доска.....
|
(Offline)
|
|
18.12.2005, 12:42
|
#66
|
|
как мы преобразовываем квадрат 1*1 в то что нам надо ? множим стороны на k
тоесть реальные координаты на екране будут такие
ето координаты верхнего левого угла :
x_real_start = x_in_dim * k
y_real_start = y_in_dim * k
ето координаты нижнего правого угла :
x_real_end = (x_in_dim+1) * k
y_real_end = (y_in_dim+1) * k
если k будет к примеру 20 то получится что квадратики со стороной 20 будут
а как проверять ?
if mousex() > (x_in_dim * k) and mousex()<((x_in_dim+1)*k) and mousey()>(y_in_dim * k) and mousey()<((y_in_dim+1)*k) then
....
end if
главное смотреть чтобы x_in_dim и y_in_dim невышли за рамки массива, я лично непарился и делел массив больше
ps. у тебя постановка задачи неправильная, или мышление неправильное небойся, с опытом приходит
ps2. найди какой нибудь пример простенькой игрушки, и попытайся зделать чтонибудь наподобе нее, если неполучается - смотри как делали в игре
|
|
|
18.12.2005, 20:44
|
#67
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
Фсе окончательно запутался с етими координ.,
Какие ед изм в Blitz'e а то не пойму: конус одно, картинка вроде уже в пикселях, ни че не понимаю как их соединить ?
PS Спасибо за терпение...
|
(Offline)
|
|
18.12.2005, 23:05
|
#68
|
|
измерения в блице - mouse получается в пикселях
и все
поставь задачу толком, и скажи в чем проблемма... помогу
|
|
|
19.12.2005, 07:43
|
#69
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
попробую подготовить вопрос, а вообще чё получается за то и хватаюсь чёб не топтаться на одном месте, поетому и вопросы такие не связанные...
тенкс
|
(Offline)
|
|
31.12.2005, 03:25
|
#70
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
jimon слушай подскажи че-нить можно с етим кодом сделать,
а то мне совсем не нравятся такие проблемы в начале пути.
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
Global fntArial=LoadFont("Arial",22)
SetFont fntArial
Global cam_pivot=CreatePivot()
PositionEntity cam_pivot,10,0,10
cam=CreateCamera(cam_pivot);камера
PositionEntity cam,-15,15,-30
light=CreateLight();свет
LightColor light,255,255,255
RotateEntity light,90,0,0
Global sph=LoadTexture("star.jpg")
;Dim pole(7,7)
For ty=0 To 7
For tx=0 To 7
sphere=CreateSphere(16)
EntityTexture sphere,sph
PositionEntity sphere,tx*3,0,ty*3
Next
Next
While Not KeyHit(1)
If KeyDown(200)=True Then
p$="Вверх"
rot_c=rot_c+1
EndIf
If KeyDown(208)=True Then
p$="Вниз"
rot_c=rot_c-1
EndIf
If KeyDown(203)=True Then
p$="Влево"
yaw#=-3
EndIf
If KeyDown(205)=True Then
p$="Вправо"
yaw#=3
EndIf
TurnEntity cam_pivot,0,yaw#,0
RotateEntity cam,rot_c,-20,0
yaw#=0
RenderWorld
; Text 10,51,"Box at 100,100 is RGB:" + ColorRed() + "," + ColorGreen() + "," + ColorBlue() + "!"
Text 10,11,"Стрелка " + p$
; Text 10,31,"index " + index
Text 10,51,"FPS: "+MaxFPS + " FPS=" +FPS
Flip()
FPS=FPS+1
If mFPS<MilliSecs() Then
mFPS=MilliSecs()+1000
MaxFPS=FPS
FPS=0
EndIf
Wend
End
заодно прикреплю файлик(там бб и картинка(спрайт от ракеты)
Так вот проблема в FPS , а точнее в их кол-ве 7шт
у меня P2-434Мгц 16Video,128ram
ну не правильно что при создании 64 сфер обтянутых шкуркой,
такой загруз должен быть(даже на моём железе)
наверно можно по другому, но как ?
посему прошу наставлений...
или Blitz простые вещи, тоже делает через не туда ?
|
(Offline)
|
|
31.12.2005, 12:54
|
#71
|
|
у тебя щетчик fps кривой до невозможности - и непашет
юзай мой
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Global fntArial=LoadFont("Arial",22)
SetFont fntArial
Global cam_pivot=CreatePivot()
PositionEntity cam_pivot,10,0,10
cam=CreateCamera(cam_pivot);êàìåðà
PositionEntity cam,-15,15,-30
light=CreateLight();ñâåò
LightColor light,255,255,255
RotateEntity light,90,0,0
Global fps_buffer1%,fps_buffer2%,fps%
Function fps()
fps_buffer1%=fps_buffer1%+1:If MilliSecs()-fps_buffer2%>1000 Then:fps_buffer2%=MilliSecs():fps%=fps_buffer1%:fps_buffer1%=0:End If
End Function
Global sph=LoadTexture("star.jpg")
sphere=CreateSphere()
; HideEntity sphere
For ty=0 To 7
For tx=0 To 7
sphere2=CopyEntity(sphere)
EntityTexture sphere,sph
PositionEntity sphere,tx*3,0,ty*3
Next
Next
While Not KeyHit(1)
fps()
If KeyDown(200)=True Then
p$="Ââåðõ"
rot_c=rot_c+1
EndIf
If KeyDown(208)=True Then
p$="Âíèç"
rot_c=rot_c-1
EndIf
If KeyDown(203)=True Then
p$="Âëåâî"
yaw#=-3
EndIf
If KeyDown(205)=True Then
p$="Âïðàâî"
yaw#=3
EndIf
TurnEntity cam_pivot,0,yaw#,0
RotateEntity cam,rot_c,-20,0
yaw#=0
UpdateWorld
RenderWorld
Text 10,11,"Ñòðåëêà " + p$
Text 10,51,"FPS: "+fps
Flip 0
Wend
End
сорри руский текст в коде затрется - думаю для тебя непроблема востановить ?
ps. у меня ~560 - 600 фпс
проблемма была в том что ты создавал каждый раз новую сферу, да притом такую большую (помойму 256 полигонов в каждой)
и flip 0 надо ставить
и разрешение екрана лутче ставить 800*600 и в оконом режиме
|
|
|
07.01.2006, 00:17
|
#72
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
такая проблемка при кликах на правую кнопку мыши мерцает екран
(т.е. как будто один кадр смещен - "кадры бегут")
код не много урезан для форума, целиком в архиве
...
While MouseDown(2); вращение игрового поля
*
*xs=MouseXSpeed()
*If *GraphicsWidth() -1 <= MouseX() Then;переход границ экрана
* MoveMouse GraphicsWidth()-MouseX(),MouseY()
* Else If MouseX() =< 0 Then
* MoveMouse GraphicsWidth() -1,MouseY()
*End If
*If *GraphicsHeight() -1 <= MouseY() Then
* MoveMouse MouseX(),GraphicsHeight()-MouseY()
* Else If MouseY() <= 0 Then
* MoveMouse MouseX(),GraphicsHeight()-1
*End If *
*rot_y=0
*If xs<0 Then rot_y=rot_y+(2-xs/30)
*If xs>0 Then rot_y=rot_y-(2+xs/30)
*If xs<>0 Then *
* TurnEntity cam_pivot,0,rot_y,0
*End If
*fps()
*UpdateWorld
*RenderWorld
*shinfo()
*Flip
Wend
End Function
....
и если подвигать мышкой, а затем нажать пр.кнопку то возможен поворот поля,
вроде обнуляю переменную(rot_y) только перед расчетами нового значения
в чем дело ?
еще - я использую функцию fps() и shinfo() в двух места ето коректно? ,
просто ето когда зажата кнопка мыши чеб вся инфа обновлялась, может я не грамотно распологаю код
PS кстати jimon насчет щетчика fps ты перебрал ето не мой(с форума)
во вторых показания примерно одинаковые (возможно на больших измерениях будет по другому у меня 25-30fps(434Мгц)после апгрейта проверю , так чё еще обсудим
объясни что дает flip 0
и моя проблема вроде (но 100% не говорю) была в большом количестве сегментов
(полигонов) сферы, flip и разрешение,режим екрана - больших скочков не давали
|
(Offline)
|
|
07.01.2006, 14:57
|
#73
|
|
обычно делают так :
Function povorot()
zs#=MouseZSpeed ()
If MouseDown(3)=True Then zoom#=1
If ZS=-1 Then zoom#=zoom#+0.1
If ZS=1 Then zoom#=zoom#-0.1
If zoom#<0.5 Then zoom#=0.5
If zoom#>1.5 Then zoom#=1.5
CameraZoom cam,zoom#
If MouseDown(2) Then; âðàùåíèå èãðîâîãî ïîëÿ
xs=MouseXSpeed()
rot_y=0
If xs<0 Then rot_y=rot_y+(2-xs/30)
If xs>0 Then rot_y=rot_y-(2+xs/30)
If xs<>0 Then
TurnEntity cam_pivot,0,rot_y,0
End If
End If
MoveMouse 400,300
fps()
UpdateWorld
RenderWorld
shinfo()
Flip 0
End Function
400,300 - ето расширение екрана поделить на два .. просто мне влом было писать graphicswidth()/2 и тд
flip 0 рисует кадр без вертикальной синхронизации
тоесть есть писать flip до количество кадров в секунду ограничится частотой обновления екрана (у меня 100 герц к примеру)
|
|
|
07.01.2006, 19:09
|
#74
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
07.01.2006, 20:34
|
#75
|
ПроЭктировщик
Регистрация: 03.12.2005
Сообщений: 111
Написано 0 полезных сообщений (для 0 пользователей)
|
impersonalis
между прочим ето я уже прочитал, и у меня не подтвердилось: / чуть-чуть выигрывало,
доберусь до оптимизации игры пообщаемся,ты бы лучше на письмо ответил
Если совсем не понятен вопрос в письме , то кратко будет так :
" Вы можете из_менять код форума ? "
или по теме прокоментировал ,потому как я не понял почему кадры прыгали то
jimon так и не понял чё делает етот ноль (у меня тоже 100 Гц 1024*768 17" )
я так понял ты ответил на " MouseDown(2)" -- помогло
помнишь спрашивал про то как определить объект с помощью мышки
так вот ты вроде тогда мне про 2D писал, а 3D -- EntityZ(X,Y) пойдет ?
PS impersonalis как ты нашел не документированые функции ? и есть ли ещё ?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
С++ и SDK Blitz |
Evgenii |
C++ |
8 |
06.01.2010 13:19 |
Blitz v1.66 !!! |
klopmaks |
Blitz3D |
18 |
18.06.2007 15:21 |
Не Blitz |
ZanoZa |
Болтовня |
23 |
30.10.2005 20:40 |
Часовой пояс GMT +4, время: 06:24.
|