|
3D-программирование Вопросы, касающиеся программирования 3D мира |
12.09.2007, 07:01
|
#1
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Здравствуйте!
Столкнулся с проблемой не решаемой на моём уровне знаний блитца )
Даж незнаю как объяснить...
Ну короче например у меня 2 функции. Первая создаёт объект и камеру которую привязывает к нему. Вторая функция реализует управление объектом с клавиш.
Если они у меня одновременно запущенны гденибудь под
While Not KeyDown(1)
функция1()
функция2()
то всё нештяк объект есть всё управляется всё зашибись.
Но вдруг решил я что объекта не должно быть при старте игры и что он должен вызываться ну например на клавишу.
И вот значит так клавишей вызывается функция создающая объект и камеру.
If KeyHit(16) Then
функция()
End If
Но проблема при например такой системе
While Not KeyDown(1)
If KeyHit(16) Then
функция()
End If
функция2()
Будет сразу вылазить ошибка ибо функция с управлением объекта запускается и грит чувак а чем я буду управлять? нету такого объекта нафиг! усё ошибка клосед виндо =)
Знач пробую решить это запуском обоих функций с клавиши
While Not KeyDown(1)
If KeyHit(16) Then
функция()
функция2()
End If
Итак объект с камерой загрузился, ошибок не вылазиет. НО!
Управление объектом именнуемое функция2 непашет ибо чтобы создать объект достаточно один раз вызвать функцию, но чтобы управлять объектом с помощю другой функции нужно чтобы эта функция не на миллисикунду вызвалась а работала постоянно!
Так вот суть вопроса:
Надо мне чтобы оби функции вызывались с 1 клавиши и чтобы первая функция сработала 1 раз а не плодила мне новые объекты с новыми камерами убивая блитц а вторая функция наоборот постоянно должна работать чтобы обеспечить объект управлением.
Подскажите пожалуйста как реализовать?
Я уверен что это очень просто но я незнаю как...
Кстати сам объект в моей подписи =)
О вот ещё забыл спросить. И как потом после остановить эту функцию с управлением? выключить нафиг.
И как можно удалить объекты созданные функцией?
Это всё мне нужно для того чтобы можно было не на одном корабле всю игру летать а на разных, и у всех должны быть разные характеристики, тобиш надо избавляться от функций1 и 2 и уже загружать новые 2 функции с кораблём и новым управлением.
Вопщем жду помощи товарисчи!
|
(Offline)
|
|
12.09.2007, 07:35
|
#2
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Функции (
Вызываешь функцию №1, и перед вызовом второй проверяешь, есть ли объект, и еще, зачем создавать каждый раз новую камеру? Создай одну, а потом привязывай. Функцию тебе нужно сделать чтоб, создавался объект, к нему привязывать камеру, и если надо камеру передвинуть в его положение.
|
(Offline)
|
|
12.09.2007, 07:39
|
#3
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Функции (
Нуу там камеру ещё на разное расстояние отдалять надо у каждого объекта...
Можно пример по проверке есть ли объект?
|
(Offline)
|
|
12.09.2007, 08:46
|
#4
|
|
Re: Функции (
if Blablabla = Null then обьекта нету
|
|
|
12.09.2007, 12:37
|
#5
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Функции (
player_est = 0
While Not KeyDown(1)
If KeyHit(16) Then
функция()
player_est = 1
End If
if player_est = 1 then функция2()
|
(Offline)
|
|
12.09.2007, 12:48
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Функции (
или каждой функции свою клавишу, или постав счётчик на одну клавишу и тогда функции будут поочереди заменять друг друга когда будеш нажимать на эту клавишу !!
|
(Offline)
|
|
12.09.2007, 14:49
|
#7
|
ПроЭктировщик
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений (для 16 пользователей)
|
Re: Функции (
Итак:
в начале создаешь камеру
и событие, по которому должна выполняться функция обработки, в функции обработки пишешь: if твое событие истино then
if твой обьект <> 0
здесь работа над объдктом
ендиф
ендиф
потом в цикле вызываешь эту функцию, не забудь когда надо присвоить значение твоего усковия выполнения обработки когда тебе надо, если обьекра нет то функция не выполняеться
|
(Offline)
|
|
12.09.2007, 15:36
|
#8
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Функции (
Не в обиду, но ты ещё собирался ММОРПГ писать?
|
(Offline)
|
|
12.09.2007, 17:18
|
#9
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Функции (
Сообщение от Raiter
Не в обиду, но ты ещё собирался ММОРПГ писать?
|
Я?
Я предложил команде рпгешников с той темы ммо писать.
|
(Offline)
|
|
12.09.2007, 17:25
|
#10
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Функции (
Сообщение от Raiter
player_est = 0
While Not KeyDown(1)
If KeyHit(16) Then
функция()
player_est = 1
End If
if player_est = 1 then функция2()
|
чёто неработает (
вторая функйия не может найти объект ибо объект не в глобале. а в глобал я его из функции поставить немогу...
походу надо както делать и создане объекта и его управление в одной функции
я тут просто решил заново подругому делать игру которую делал
так вот в старой версии у меня объекты грузились вообще не из функций а напрямую с цикла, при включении игры все объёкты уже стояли и функции с управлением тоже были загружены.
а вот чтобы объект и его управление грузился не при старте игра а когда я захочу и всё работало у меня не получается (
Ниже предоставлю части кода которые мы щас обсуждаем
Global speedk1#=0
Global mXSp#
Global mYSp#
;тот объект (щас не в функции)
Global k1 = LoadMesh("Data\object\ships\k1\k1.b3d")
ScaleEntity k1,1,1,1
PositionEntity k1,0,0,0
RotateEntity k1, 0, 0, 0
;камера его
Camera = CreateCamera(k1)
PositionEntity Camera,3,60,-320
RotateEntity Camera, 0, 0, 0
CameraRange Camera,1.0,100000000
;функция управление
Function k1u()
Zkrenk1#=0.5
XYkrenk1#=0.5
TSpeed#=0.010
TurnEntity k1,mYSp*TSpeed,0,0
TurnEntity k1,0,-mXSp*TSpeed,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
MoveEntity k1,0,0,+speedk1#
If KeyDown(30) Then TurnEntity k1,0,0,+Zkrenk1#
If KeyDown(32) Then TurnEntity k1,0,0,-Zkrenk1#
If KeyDown(200) Then TurnEntity k1,+XYkrenk1#,0,0
If KeyDown(208) Then TurnEntity k1,-XYkrenk1#,0,0
If KeyDown(203) Then TurnEntity k1,0,+XYkrenk1#,0
If KeyDown(205) Then TurnEntity k1,0,-XYkrenk1#,0
If KeyHit(17) Then
speedk1#=speedk1#+15
End If
If KeyHit(31) Then
speedk1#=speedk1#-15
End If
If speedk1#=60 Then
speedk1#=45
EndIf
If speedk1#=-15 Then
speedk1#=0
EndIf
End Function
While Not KeyDown(1)
; вызываю функцию управление
k1u()
mXSp=MouseXSpeed()
mYSp=MouseYSpeed()
UpdateWorld
RenderWorld
Flip
Wend
End
В таком виде работает. Но мне надо сделать както чтобы не сразу работало а по какомуто событию, нарпимер нажатие Q как писал выше.
Скрин
|
(Offline)
|
|
12.09.2007, 17:27
|
#11
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Функции (
не может такого быть. опять что-ьл не правильно делаеш
|
(Offline)
|
|
12.09.2007, 17:50
|
#12
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Функции (
Сообщение от Raiter
не может такого быть. опять что-ьл не правильно делаеш
|
Посмотри части кода сверху.
|
(Offline)
|
|
12.09.2007, 18:07
|
#13
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Функции (
Ща посмотрю
вторая функйия не может найти объект ибо объект не в глобале. а в глобал я его из функции поставить немогу...
|
ты можеш объявить его глобальным в начале програмы
Вообще всё елеметарно. Выложи код с медией - сделаю всё
ЗЫЖ первый скрин напоминает мне разукрашеного пингвина, который приложил "крылья" к телу и пригнул вперед....
|
(Offline)
|
|
12.09.2007, 18:45
|
#14
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Функции (
Господа, а не проще ли в аське пообщаться?
|
(Offline)
|
|
12.09.2007, 20:12
|
#15
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Функции (
Сообщение от dimanche13
Господа, а не проще ли в аське пообщаться?
|
Мистер диманче
Вообщето мы пишем по теме в нужном разделе.
Почему это мы должны через асю? форум для чего?
Быть может вообще не будем заходить на форум а будем все в асях общяться?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
API Функции |
maxturbo |
Библиотеки |
8 |
18.09.2009 02:38 |
функций |
NitE |
BlitzMax |
16 |
17.08.2009 00:39 |
Функции |
pipns |
Основной форум |
1 |
23.04.2007 11:54 |
Где функции? |
root |
3D-программирование |
12 |
02.01.2006 23:34 |
Часовой пояс GMT +4, время: 17:00.
|