В чем проблема?
| |
Nub | Дата: Четверг, 02.02.2012, 21:04 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Статус: Offline
| Вот кусок кода.Подскажите пожалуйста в чём проблема!
Code For i=1 To 99 If MeshesIntersect(player,prep(i))=True Then End Next For i=1 To l For p=1 To 99 If MeshesIntersect ( vystr(i)\ent,prep(p)) Free_Vystrel(i) FreeEntity prep(p) Score=Score+1 EndIf Next Next
Quote If MeshesIntersect ( vystr(i)\ent,prep(p))
Ругается на эту строчку кода фразой "Object does not exist"
Лучшее - враг хорошего. Сделал ты игру, решил улучшить, а потом до ночи сидишь и думаешь, что же ты такого сделал.
|
|
| |
ParisHilton | Дата: Пятница, 03.02.2012, 14:15 | Сообщение # 2 |
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
| "Object does not exist" - ты обращаешься к пустому или не существующему элементу. Проверь чему равны i и j в момент ошибки и перепроверь существует ли vystr()\ent и-ый и prep() p-ый
Мы ищем предмет цели для того чтобы найти результаты его следствия
|
|
| |
MishanayCool | Дата: Пятница, 03.02.2012, 14:23 | Сообщение # 3 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Вижу в переменной vystr(i)\ent скобки и знак слеша. Ты уж определись как объявлять её. Как массив или как типовая?
Так объявляются Типы(Type) Code Graphics 800,600,0,2 SetBuffer BackBuffer() SetFont(LoadFont("Arial",16))
Type CHAIR Field X Field Y Field HEIGHT End Type
; Создаём 100 новых стульев, используя FOR ... NEXT и назвав коллекцию именем ROOM For tempx = 1 To 10 For tempy = 1 To 10 room.chair = New Chair room\x = tempx room\y = tempy room\height = Rnd(0,10) ; Выставить случайную высоту от 0 до 10 Next Next
; Сместить их все на 1 For room.chair = Each chair room\x = room\x + 1 Next
; Вывод на экран room_=1 For room.chair = Each chair Text 5,room_*16-16,"Стул №="+room_+", x="+room\x+", y="+room\y+", height="+room\height room_=room_+1 Next WaitKey() End
Теперь аналогичный код, но используя массивы Code Dim room(100) Dim room_X(100) Dim room_Y(100) Dim room_Height(100)
Graphics 800,600,0,2 SetBuffer BackBuffer() SetFont(LoadFont("Arial",16))
; Создаём 100 новых стульев tempx=1 tempy=1 For chair=1 To 100 room(chair)=chair room_X(chair) = tempx room_Y(chair) = tempy room_Height(chair) = Rnd(0,10) ; Выставить случайную высоту от 0 до 10 tempy=tempy+1:If tempy>10 Then tempx=tempx+1:tempy=1 Next
; Сместить их все на 1 For chair = 1 To 100 room_X(chair)=room_X(chair)+1 Next
; Вывод на экран For chair = 1 To 100 Text 5,chair*16-16,"Стул №="+room(chair)+", x="+room_X(chair)+", y="+room_Y(chair)+", height="+room_Height(chair) Next WaitKey() End
Это два разных подхода, но суть одна, а у вас Nub намешано сразу два варианта.
MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Пятница, 03.02.2012, 14:54 |
|
| |
Nub | Дата: Пятница, 03.02.2012, 15:42 | Сообщение # 4 |
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Статус: Offline
| Забыл добавить.Если убрать эту строчку то не вылетает.Но и объект есстественно не убирается Вот код посмотрите пожалуйста! http://depositfiles.com/files/wzaqvnoqp
Лучшее - враг хорошего. Сделал ты игру, решил улучшить, а потом до ночи сидишь и думаешь, что же ты такого сделал.
|
|
| |
MishanayCool | Дата: Пятница, 03.02.2012, 17:06 | Сообщение # 5 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Посмотрел! Проще заново переписать. Опиши что хотел реализовать. Лучше скрин.
MiniDemo3D - Blitz3D
|
|
| |
Nub | Дата: Пятница, 03.02.2012, 19:01 | Сообщение # 6 |
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Статус: Offline
| Ну, если весь код то корабль летит и обстреливает летящие навстречу корабли.А если конкретно эту функцию то проверяет не соприкоснулся-ли враг с игрок, и не соприкоснулся-ли выстрел с врагом.
Вот ссылка на скрин.
Лучшее - враг хорошего. Сделал ты игру, решил улучшить, а потом до ночи сидишь и думаешь, что же ты такого сделал.
|
|
| |
MishanayCool | Дата: Пятница, 03.02.2012, 19:41 | Сообщение # 7 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Зачем скрин на депозит заливать, вот так трудно?
MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Пятница, 03.02.2012, 19:43 |
|
| |
Nub | Дата: Вторник, 07.02.2012, 21:28 | Сообщение # 8 |
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Статус: Offline
| Всё спасибо теперь научился . А с проблемой что делать?
Добавлено (04.02.2012, 18:23) --------------------------------------------- Quote Вижу в переменной vystr(i)\ent скобки и знак слеша. Ты уж определись как объявлять её. Как массив или как типовая? MishanayCool я сделал массив типа.Такой подход увидел в системе частиц .И вроде сам выстрел работает а в функции его соприкосновения с врагом ошибка .
Добавлено (04.02.2012, 18:56) --------------------------------------------- Эээ я чёто не врубился.Поставил вместо команды FreeEntity команду EntityAlpha entity,0.Всё работает .Сделал функцию убирающую этот корабль из поля зрения-опять работает.В общем проблема как-бы решена , но скажите: из-за чего FreeEntity не работал?Версия Blitz3d 1.98Добавлено (07.02.2012, 21:28) --------------------------------------------- Ладно так как решение нашёл(туповатое правда ) и не хочется для этого создавать новую тему, подскажите пожалуйста в чём тут ошибка Вроде должно проверять не появился-ли плэйер на х-координатах или рядом,а если появился увеличивать Score на 1. Заранее благодарю.
Лучшее - враг хорошего. Сделал ты игру, решил улучшить, а потом до ночи сидишь и думаешь, что же ты такого сделал.
Сообщение отредактировал Nub - Суббота, 04.02.2012, 18:58 |
|
| |
ParisHilton | Дата: Среда, 08.02.2012, 14:51 | Сообщение # 9 |
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
| Я так понял, ты с помощью функции AI() пытаешься определить расстояние\дистанцию до игрока от заданной точки. В таком случае лучше пользуйся математической функцией:
Code If Sqr((EntityX#(prep(i))-EntityX#(Player))^2+((EntityY#(prep(i))-EntityY#(Player))^2+(EntityZ#(prep(i))-EntityZ#(Player))^2)<distance Then
Мы ищем предмет цели для того чтобы найти результаты его следствия
|
|
| |
Nub | Дата: Среда, 08.02.2012, 15:16 | Сообщение # 10 |
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Статус: Offline
| Неа не расстояние. Хочу определить находится ли ИГРОК на пути ВРАГА(или где-то в этих пределах.Для этого и нужна переменная k. Она постепенно увеличивается и проверяет каждый см на наличие игрока ). Если да то увеличить переменную Score на 1.
Лучшее - враг хорошего. Сделал ты игру, решил улучшить, а потом до ночи сидишь и думаешь, что же ты такого сделал.
|
|
| |
|