 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
14.01.2010, 00:07
|
#136
|
Дэвелопер
Регистрация: 21.11.2009
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопросы очередного новичка
Eanub, не знаю, как другие, а я не понял, ЗАЧЕМ ТЕБЕ ПОЗИЦИОНИРОВАТЬ В ЦИКЛЕ?  PositionEntity заюзай до цикла, а в цикле двигай!
Хотя... Если я правильно понял, тебе надо ПРЯМО В ЦИКЛЕ переместить игрока в точку?  Если так, то... хм... Ну мне ничего умнее этого в голову не пришло:
i=1
...
repeat ;начало цикла
...
if i=1 then positionentity player,x,y,z
i=2
endif
...
Until KeyHit(1)
И каждый раз, когда надо переместить таким же образом делай i=1, а x, y, z нужными координатами. Конечно, есть решение попроще  Но мне в голову пришло только это.
Если я неправильно тебя понял, я извиняюсь
__________________
осталось 7
|
(Offline)
|
|
14.01.2010, 16:46
|
#137
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: Вопросы очередного новичка
Baton4 я ему ето писал, ему чемто не понравилось))
Eanub никто не поймет в чем проблема, дай хоть код 
__________________
StimuL
Maks
|
(Offline)
|
|
14.01.2010, 17:37
|
#138
|
ПроЭктировщик
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений (для 34 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от Baton4
Eanub Если я правильно понял, тебе надо ПРЯМО В ЦИКЛЕ переместить игрока в точку?
|
так оно и есть
Сообщение от KingMaks
Baton4 я ему ето писал, ему чемто не понравилось))
|
при i=2 он возвращяет кординату которая была раньше
Вот новая вещ, не давно обнаружил: если ты стоишь в той комнате куда надо переместиться то это вполне работает... а когда не в этой то на милисикунду (наверно  ) игрок переползает куда надо а потом назад где был
и еще на досуге пришел вопрос 
как в blitz3D проверить столкновение с объектом
Последний раз редактировалось RlexGm, 14.01.2010 в 19:20.
|
(Offline)
|
|
14.01.2010, 19:56
|
#139
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Вопросы очередного новичка
ЕаНуб код в студию 
|
(Offline)
|
|
14.01.2010, 19:58
|
#140
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: Вопросы очередного новичка
EaNub
EntityCollided
__________________
StimuL
Maks
|
(Offline)
|
|
14.01.2010, 20:28
|
#141
|
ПроЭктировщик
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений (для 34 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от KingMaks
EaNub
EntityCollided
|
If KeyHit(Jump) And EntityCollided(Player,TypeFloor) Then MoveEntity Player,0,20,0
Но прыжка не происходит вообще(
Код в сокращении:
Graphics3D 0,0,32,1
SetBuffer BackBuffer()
Global Menusost=1 ; меню при старте программы
Global PlX#,PlY#,PlZ# ; координаты игрока
PositionEntity Player,50,60,60
While
; ну вообщем там поиграли и ....ну скажем захотели еще раз последний момент позыреть
If KnopkaLoadGame=1 ; ах да кнопка постоянно обновляется в 0
Menusost=4
PlX#=50 ;
PlY#=60 ;
PlZ#=60 ; корды тестовые, потом они из файла считываться будут...
EndIf
If MenuSost=4
PositionEntity Player,PlX#,PlY#,PlZ#
Menusost=2
EndIf ; вот я делаю как вы мне посоветовали..
RenderWorld
UpdateWorld
Flip
Wend
End
|
(Offline)
|
|
14.01.2010, 20:37
|
#142
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от EaNub
вот я делаю как вы мне посоветовали..
|
как мы посоветовали лутше не делать.Слушайся советов опытных програмистов
Зделай при столкновении плеера с полом прыжок = ноль
если прыжок = ноль и нажать пробел то игрок прыгет и прыжок = один
__________________
StimuL
Maks
|
(Offline)
|
|
14.01.2010, 20:51
|
#143
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от EaNub
If KnopkaLoadGame=1 ; ах да кнопка постоянно обновляется в 0
Menusost=4
PlX#=50 ;
PlY#=60 ;
PlZ#=60 ; корды тестовые, потом они из файла считываться будут...
EndIf
If MenuSost=4
PositionEntity Player,PlX#,PlY#,PlZ#
Menusost=2
EndIf ; вот я делаю как вы мне посоветовали..
RenderWorld
UpdateWorld
Flip
Wend
End
|
гыг зачем выносить MenuSost за пределы KnopkaLoadGame при такой логике? Достаточно
If KnopkaLoadGame=1 ; ах да кнопка постоянно обновляется в 0
PlX#=50 ;
PlY#=60 ;
PlZ#=60 ; корды тестовые, потом они из файла считываться будут...
PositionEntity Player,PlX#,PlY#,PlZ#
Menusost=2
EndIf ; вот я делаю как вы мне посоветовали..
-2 лишних переменных и минус лишний if
Истинный кошмар
If KeyHit(Jump) And EntityCollided(Player,TypeFloor) Then MoveEntity Player,0,20,0
|
Собсно проблема хде-то сдесь прячется. Есть уже уйма предположений:
Для начала напиши так
If KeyHit(Jump) And EntityCollided(Player,TypeFloor)
MoveEntity Player,0,20,0
Stop;
EndIF
При нажатии пробела(или чем ты там прыгаешь) программа должна "зависнуть". Тоесть она как-бэ закончится на этом моменте и больше не будет выполнятся. Если при нажатии пробела игра не останавливается - ошибка в условиях:
1)Бах в EntityCollided(Player,TypeFloor). Плееру не задан тип, а может и колизии с полом - EntityCollided работает лишь при заданных коллизиях. Солюшн: Убрать And EntityCollided(Player,TypeFloor) и попробовать прыгать.
2)Бах в If KeyHit(Jump) - переменная Jump задана неправильно. Солюшн: открыть код, нажать Ctrl+F ввести в поле Jump и посмотреть действительно ли там сканкод 57.
3)Бах в MoveEntity Player,0,20,0 кроме того что для прыжка он двигается по оси Y(  ), не исключен вариант что твой игрок прыгает "в пол" а колизии его выталкивают обратно => ничего не просиходит. Солюшн: Поиграть со значениями MoveEntity
Таким образом БАХ может быть в любой части If'a.
|
(Offline)
|
|
14.01.2010, 21:12
|
#144
|
Дэвелопер
Регистрация: 21.11.2009
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от EaNub
If KnopkaLoadGame=1 ; ах да кнопка постоянно обновляется в 0
|
Вот в этом месте видимо и трабла! (где обновляется). Выкладывай ВЕСЬ КОД! А то не видать тебе фикса 
__________________
осталось 7
|
(Offline)
|
|
14.01.2010, 21:15
|
#145
|
Дэвелопер
Регистрация: 21.11.2009
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от EaNub
при i=2 он возвращяет кординату которая была раньше
|
Трабла в коде! Значит, где-то в цикле у тебя есть
if i=2 then moveentity player,startx,starty,startz
__________________
осталось 7
|
(Offline)
|
|
14.01.2010, 22:18
|
#146
|
ПроЭктировщик
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений (для 34 пользователей)
|
Ответ: Вопросы очередного новичка
я узнал причину оставания на месте при загрузки и она меня ужаснула!=)
я это все проверял в узких коридорах и не заметил..
при позиционровании он ударяется в стену всторону той точки...
|
(Offline)
|
|
14.01.2010, 22:58
|
#147
|
Дэвелопер
Регистрация: 21.11.2009
Сообщений: 1,701
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от EaNub
я узнал причину оставания на месте при загрузки и она меня ужаснула!=)
я это все проверял в узких коридорах и не заметил..
при позиционровании он ударяется в стену всторону той точки...
|
Почему-то меня преследует острое ощущение дежа-вю...
__________________
осталось 7
|
(Offline)
|
|
14.01.2010, 23:05
|
#148
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопросы очередного новичка
Вопрос - а можно из типов Type делать массивы...
Например:
Type Body
Field x,y,
End Type
...
Dim Body(100)
...или типы работают только как связанные списки...?
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
14.01.2010, 23:14
|
#149
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений (для 15,676 пользователей)
|
Ответ: Вопросы очередного новичка
Field somethimg[100];
(по памяти)
* пардон, неверно прочитал вопрос.
См. след пост
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
14.01.2010, 23:27
|
#150
|
Знающий
Регистрация: 18.02.2008
Сообщений: 276
Написано 121 полезных сообщений (для 299 пользователей)
|
Ответ: Вопросы очередного новичка
Можно:
Type Body
Field x,y,z
End Type
Dim array.Body(10)
For i=0 To 10
array(i) = New Body
array(i)\x=Rnd(1,10)
array(i)\y=Rnd(1,10)
array(i)\z=Rnd(1,10)
Next
For i=0 To 10
Text 10, i*10, array(i)\x
Text 100, i*10, array(i)\y
Text 200, i*10, array(i)\z
Next
WaitKey()
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:28.
|