forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на BlitzMax (http://forum.boolean.name/forumdisplay.php?f=106)
-   -   Vivo (http://forum.boolean.name/showthread.php?t=16218)

Spy4433 02.05.2012 17:48

Ответ: Vivo
 
а почему бы не взять физический движок ?

Nikich 02.05.2012 21:01

Ответ: Vivo
 
Потому что мне нужно только перемещение от физики.

Жека 03.05.2012 10:47

Ответ: Vivo
 
Цитата:

Сообщение от Nikich (Сообщение 227076)
Блин, что-то вконец ничего не получается. С осью y разобрался, а вот с x вообще лажа:( Помогите найти ошибку, пожалуйста. Проблема в том, что игрок всё равно может проникнуть через блок.

Выложи архив с кодом и медией.
Я сделал сам 3 картинки, игрока 16х32 и 2 тайла размером 16х16, но по Х-координате нет препятствий в твоей карте, есть сплошной пол и небо. даже не ясно движется игрок в сторону или нет.

Nikich 03.05.2012 11:21

Ответ: Vivo
 
Блоки можно ставить и разрушать на левую и правую кнопку мыши.

Nikich 03.05.2012 17:26

Ответ: Vivo
 
Вложений: 1
Вот он. Проблема та же - что-то не так с перемещением по "x". Добавил генерацию мира рэндомную, чтобы можно было не строить препятствия.

Spy4433 03.05.2012 19:40

Ответ: Vivo
 
Код:

Graphics3D 640,480,32,2
FPS=CreateTimer(60)

Global px#,py#,pvx#,pvy#

;px,py - координты плеера
;pvx,pvy - вектора скорости


Dim map(10,10)

For t=0 To 10
map(t,10)=1
Next
map(6,9)=1
map(7,9)=1
map(8,9)=1
map(8,8)=1
map(8,7)=1


Repeat
Cls
WaitTimer(FPS)

;============================
;Отрисовка карты
For y=0 To 10
For x=0 To 10
If map(x,y)<>0 Then

Color 200,200,200
Rect x*20,y*20,20,20,1
Color 100,100,100
Rect x*20,y*20,20,20,0

If RectsOverlap(x*20,y*20,20,20,px,py,20,20) Then  ;Условие для y оси не предустмотренно если блок выше перса
If py>y Then
py=py-pvy
pvy=-Abs(pvy)
coll=1
EndIf

EndIf

If RectsOverlap(x*20,y*20,20,20,px,py,20,20) Then ;Условие для x оси
px=px-pvx
pvx=-pvx
EndIf

EndIf
Next
Next
;==================================

;==================================
;Управление
If KeyDown(30) Then pvx#=pvx#-0.1
If KeyDown(32) Then pvx#=pvx#+0.1
If KeyHit(57) And coll=1 Then
pvy=pvy-7
coll=0
EndIf
;=================================


;=================================
;Вычисления
pvy#=pvy#+0.3
pvy#=pvy#*0.9
py#=py#+pvy#
px#=px#+pvx#
pvx#=pvx#*0.95
;=================================


Rect px#,py#,20,20,0  ; Отрисовка перса

Flip
Until KeyHit(1)

вот накатал на коленке
еще пилить и пилить

Nikich 04.05.2012 17:47

Ответ: Vivo
 
Всё, физический движок готов! Сегодня к вечеру выложу первую версию для тестов.

Nikich 05.05.2012 16:32

Ответ: Vivo
 
Вложений: 1
Вот и первая версия.
Мир генерируется почти что полным рэндомом, поэтому не гладкий, а немного кривоватый, но это будет исправлено. Пока что есть 3 биомы: равнина( уровень земли почти одинаковый по всей биоме), холмы( заметная разница в уровне земли), горы( очень большой разброс в уровнях).

reumep 05.05.2012 21:21

Ответ: Vivo
 
а где ты BlitzMax взял, не купил ли часом?
внезапно понял, что Vivo теперь на максе

Nikich 05.05.2012 22:33

Ответ: Vivo
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 50 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Кстати, что там с фпс? Ведь теперь рисуется в 4 раза больше картинок, так как блоки в 4 раза меньше. Что-то около 4000 картинок на экран с разрешением 1280 на 1024.
И еще. Побегайте, посмотрите что там с коллизиями. Вдруг у кого-то что-то не так работает. Мой друг говорит, что у него нужно прокопать под собой яму 3 блока шириной, чтобы упасть, однако у меня достаточно только двух блоков.

Spy4433 05.05.2012 23:15

Ответ: Vivo
 
однако у меня перемещаться получается) .
так что побегать не получилось а вот попрыгать можно вроде норм все :)

Nikich 05.05.2012 23:58

Ответ: Vivo
 
Может НЕ получается?
Попробуй поразрушать блоки, которые рядом находятся.

Spy4433 06.05.2012 11:05

Ответ: Vivo
 
Цитата:

Может НЕ получается?
верно

__________________________________________________ _____________
у меня перс залипает когда подходит к краю блока на котором стоит ,
это если этот блок один на этой высоте , если же есть рядом еще блок(и),
то перс вообще намертво приклеен, спасает тока прыжок.

__________________________________________________ _____________


FPS :59-61
1280х1024

Nikich 06.05.2012 12:10

Ответ: Vivo
 
Странно, у меня на таком же разрешении всё отлично работает.

Nikich 06.05.2012 16:46

Ответ: Vivo
 
Заметил, что это связано с разрешением экрана. Видимо макс что-то меняет в зависимости от разрешения. У кого-нибудь есть сведения по этому поводу?


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

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