forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Функции ( (http://forum.boolean.name/showthread.php?t=4420)

Crystal 12.09.2007 20:15

Re: Функции (
 
Цитата:

Сообщение от Raiter
Ща посмотрю :)



ты можеш объявить его глобальным в начале програмы ;)

Вообще всё елеметарно. Выложи код с медией - сделаю всё :)

ЗЫЖ первый скрин напоминает мне разукрашеного пингвина, который приложил "крылья" к телу и пригнул вперед.... :-)

це дизайн корабля хлопец =) я решил что сзади должен выглядеть он так )

насчёт глобала ты имел ввиду Global k1 и всё?

а медию не выложу. мне ненадо чтобы за меня делали мою игру )
и в игре естественно я корабль кнопкой Q создавать не буду.
я понять хочу как создать объект с отдельным для него управлением, и как удалить его вместе с функцией управления.

dimanche13 12.09.2007 20:18

Re: Функции (
 
Ну во-первых в аське быстрее, во-вторых в 4 посте уже прозвучал ответ и в третьих проблема ИМХО не стоит и выеденого яйца, проблема в подходу к структуре кода.
С уважением.

Crystal 12.09.2007 20:26

Re: Функции (
 
Если ты имееш ввиду

Код:

if Blablabla = Null then обьекта нету
То я незнаю что такое блаблабла
и что писать вместо "Объекта нету"


Поставил вначале Global k1
запускаю всю эту байду и функция управления пишет что незнает такого объекта как k1 ентити доес нот ексист фак ю спилберг пишет.
Значит то что я сделал объект глобальным мне не помогло.

Код:

Global speedk1#=0
Global mXSp#
Global mYSp#
Global k1
Function k1()
k1 = LoadMesh("Data\object\ships\k1\k1.b3d")
ScaleEntity k1,1,1,1
PositionEntity k1,0,0,0
RotateEntity k1, 0, 0, 0
;---------------------------------------------------KAMEPA:
Include "Data\object\camera.txt"
End Function
 
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
 
player_est = 0
While Not KeyDown(1)
If KeyHit(16) Then
k1()
player_est = 1
End If
If player_est = 1 Then k1u()
mXSp=MouseXSpeed()
mYSp=MouseYSpeed()
UpdateWorld
RenderWorld
Flip
Wend
End


Crystal 12.09.2007 20:59

Re: Функции (
 
Фуф слава тебе госпади заработало!
Я ещё до совета раитера системку делал с увеличением переменной при нажатии клавиш но неработало, постоянно ентити даос нот ексист было.
Оказывается неработало потому что я не спал 2 дня и туплю ))
Нечайно в одной из строчек кода лишний раз вызвал Функцию2
от туда и все проблемы ))

Код:

Global k1u#=0
If KeyHit(16) Then
k1()
k1u#=k1u#+1
End If
If k1u#=1 Then k1u()

Был вот такой косяк у меня:
Код:

If k1u#=1 Then k1u()
k1u()

Щас всё работает как хотел но вышла новая проблема, управление с клавиш работает, а с мышки работать перестало ))
но исправил быстро, перинёс

Код:

mXSp=MouseXSpeed()
mYSp=MouseYSpeed()

В функцию 2 =)

Теперь меня интерисует как можно удалить объект и камеру, и выключить функцию управленния ну например тоже на кнопку?

Raiter 12.09.2007 21:01

Re: Функции (
 
Бляблябля - это твой корабль :)

If blablabla <> null then объект есть...

Цитата:

Теперь меня интерисует как можно удалить объект и камеру, и выключить функцию управленния ну например тоже на кнопку?
If KeyDown(key) Then
FreeEntity Camera
FreeEntity Object
Upravl = 0
End If
...
If Upravl <> 0 Then UpdutePlayer()

Crystal 12.09.2007 21:25

Попробовал но выдаёт ентити даес нот ексист.
Вродибы камера и корабль в глобале но ета функция их невидет почемуто

Попробовал вот так удалить корабль

Код:

Global k1u2#=0
 
If KeyHit(18) Then
k1u2#=k1u2+1
End If
If k1u2#=1 Then
FreeEntity k1
End If

Пишет ентити доес нот ексист k1

Мож я опять гоню? FreeEntity точно объекты удаляет?

Или наерно скорее всего объекты то удаляются а функция с управлением остаётся,
а так как нету корабля функции упралять нечем вылазиет ошибка.

Как убить функцию?

работает например в цикле BOO()

вот чтоб её убрать удалить нафиг.

Jet 12.09.2007 23:22

Re: Функции (
 
Цитата:

Как убить функцию?

работает например в цикле BOO()

вот чтоб её убрать удалить нафиг.
функции не убиваются)
ты их просто перестаешь вызывать.. по какому-либо условию.

Crystal 12.09.2007 23:58

Re: Функции (
 
Канешно я перестаю их вызывать!
Вопрос в том как?

Я вот непонял, что это должно делать?

Цитата:

Upravl = 0
If Upravl <> 0 Then UpdutePlayer()

Crystal 13.09.2007 00:18

Re: Функции (
 
Ухаха =)
Разобрался.
Функцию то перестать вызывать легко просто была проблема.
Персатю вызывать функцию значит удаляю корабль и камеру.
А мне пишет мол фак ю спилберк ентити доес нот ексист Camerak1
Это я понял получилось из-за последовательности удаления объектов
у меня сначало удалялся корабль а потом камера. И мне писало камеры типа нету.

Если я удаляю объект то камера привязанная кнему автоматом удаляется чтоли?????

Вопщем если я удаляю сначало камеру а потом корабль то никаких ошибок у меня нету всё замечательно работает!

Код:

If KeyHit(16) Then
k1()
k1u#=1
End If
If k1u#=1 Then k1u()
 
If KeyHit(18) Then
k1u#=0
FreeEntity Camerak1
FreeEntity k1
End If


Crystal 13.09.2007 16:42

Re: Функции (
 
Цытата

Цитата:

Если я удаляю объект то камера привязанная кнему автоматом удаляется чтоли?????

H@NON 13.09.2007 17:06

Re: Функции (
 
При удалении объекта удалаются автоматически все его чилды. Поэтому , если ты хочешь этого избежать, то тебе надо распарентить нужные чилды от объекта перед его удалением.

ЗЫЖ всю тему не читал...

Crystal 13.09.2007 17:16

Re: Функции (
 
Всё ясно )
Просто если я сначало удалял объект а потом пытался удалить его камеру то писало что камеры нету ошибка.
А если удалял сначал окамеру потом объект всё зашибись )
Вот и подумал наверно он вместе с камерой удаляется.
Ты подтвердил мои доводы, спасибо!


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

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