Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 29.04.2009, 17:55   #1
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Застрял на ровном месте...

Что имеется:

обьект(загрузил меш), тип: палка(например), в типе b\ent=copyentity(обьект (вышеуказанный))

Вырезка из моего кода:

picked=CameraPick(cam,MouseX(),MouseY())

If picked>0
If EntityDistance(cam,picked)<10 And picked=b\ent And KeyHit( 18 ) Then
(что-то=что-то+1)
HideEntity picked
EndIf
EndIf
Ошибка: Variable must be a Type!
Вопрос: Что не так?

Последний раз редактировалось jimon, 30.04.2009 в 11:22. Причина: тег code
(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 18:00   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Застрял на ровном месте...

как ты заполняешь b?
чуть выше?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 18:04   #3
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Застрял на ровном месте...

Type palk
 Field ent
End Type

Function Create_palka()
 b.palk = New palk
 b\ent = CopyEntity(vetka)
 PositionEntity b\Ent,Rnd(-10,10),0,Rnd(-10,10)
 RotateEntity b\Ent,0,Rnd(360),0
 EntityPickMode b\ent,3
End Function

Последний раз редактировалось jimon, 30.04.2009 в 11:21. Причина: тег code
(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 18:12   #4
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Застрял на ровном месте...

нада юзать For Each !!
(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 18:14   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Застрял на ровном месте...

b - глобальная переменная?
Если нет то и работать в д. случае не будет.
А вообще алгоритм надо основательно пересмотреть.
Смотри тутор Type валяется где-то в разделе переводов faq
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 18:16   #6
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Застрял на ровном месте...

Спасибо, посмотрю, попробую.
(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 20:07   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Застрял на ровном месте...

Именно то, что написал АВТОМАТ я имел в виду.
Как заполняется b перед его использованием (т.е. сравненеим поля)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 29.04.2009, 23:55   #8
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Застрял на ровном месте...

Вроде что-то намудрил). Теперь (я дал номера каждому обьекту типа от 1 до 10) и когда жму клавишу при этом камера пик стоит на первом (обьектом под номером 1) действие происходит если же 2,3,4 и т.д. выбираю то ничего вообще не происходит.
Вот такая хрень(

"заполняется" - всмысле?

b- и глобал и неглобал, всё пробовал...
(Offline)
 
Ответить с цитированием
Старый 30.04.2009, 01:11   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Застрял на ровном месте...

код - телепаты в отпуску
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.04.2009, 01:43   #10
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Застрял на ровном месте...

Весь код:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Type palk
 Field ent
End Type

Global vetka=LoadMesh("vetka.b3d")
ScaleEntity vetka,0.1,0.1,0.1
EntityTexture vetka,wood
EntityPickMode vetka,3
PositionEntity vetka,0,0,30

For i=1 To 10
 b.palk = New palk
 b\ent = CopyEntity(vetka)
 PositionEntity b\ent,Rnd(-20,20),0,Rnd(-20,20)
 RotateEntity b\ent,0,Rnd(360),0
NameEntity b\ent,"palka "+i
Next

Const pl=1,zem=2,obj=3

light=CreateLight()

zemla=CreatePlane()
EntityTexture zemla,dirt
EntityType zemla,zem

Global cam=CreateCamera()
EntityRadius cam,3
PositionEntity cam,0,5,0
CameraRange cam,1,3000
EntityType cam,pl

ograda=LoadMesh("ograda.b3d")
EntityTexture ograda,wood
ScaleEntity ograda,0.1,0.1,0.1
PositionEntity ograda,0,0,10
EntityType ograda,obj

palki=0

Repeat 

picked=CameraPick(cam,MouseX(),MouseY())

For b.palk=Each palk
If picked>0
If EntityDistance(cam,picked)<10 And picked=b\ent And KeyHit(18) Then
palki=palki+1
FreeEntity picked
EndIf
EndIf
Next

Collisions pl,zem,2,2
Collisions pl,obj,2,2

move()

If Not EntityCollided (cam,zem) Then TranslateEntity cam,0,-1,0

UpdateWorld : RenderWorld

Text 10,10,palki

If picked>0
 SetFont (font)
	Text MouseX(),MouseY()-12,EntityName(picked),True,True
EndIf

Flip
Until KeyHit(1)
End

;;;END;;;

Function move()

If KeyDown(17) MoveEntity cam,0,0,0.3
If KeyDown(31) MoveEntity cam,0,0,-0.3

TurnEntity cam,0,-MouseXSpeed()/2,0,True
TurnEntity cam,MouseYSpeed()/2,0,0

MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

End Function

Последний раз редактировалось jimon, 30.04.2009 в 11:21. Причина: тег code
(Offline)
 
Ответить с цитированием
Старый 30.04.2009, 01:59   #11
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Застрял на ровном месте...

Дебаггером пользоваться умеешь?
Краткий инструктаж:
После строки
picked=CameraPick(cam,MouseX(),MouseY())
Вставь
If MouseHit(1) then Stop
Проверь, включён ли дебаг (галка Program->Debug Enabled)
И запусти. Когда нажмёшь на лев.кнопку мыши (в тот момент когда, на твой взгляд, что-то пикается) то программа свернётся и в окошке дебаггера справа смотри значение переменной Picked - если там 0 то ничего не пикнулось.
Если там цифра то значит пикнулось, но проблема в другом.
Я думаю:
1. Не пикается поэтому ничего не происходит
2. Не пикается потому что ты выставил EntityPickMode 3 а размеры прямоугольного параллелепипеда указать забыл.
Если ты выяснишь, что не пикается, попробуй EntityPickMode 2
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 30.04.2009, 02:01   #12
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Застрял на ровном месте...

значение пикед=1609... много цифр.
ентити пик уже поставил но ничего не стало...
b.palk=(null)

Подведу итоги:
Из всей етой каши получается, что создаётя 10 обьектов обьединённых типом,
наважу камеру(мышь если так угодно) на !1!(первый) обьект - всё почемуто прекрасно работает, тоесть этот обьект удаляется и значение прибавляется если же камера наведена на 2-10ый обьекты, то ничего не происходит будто бы их прсто не существует хотя я проверил камера пик=1

....

Последний раз редактировалось ARTMAN, 30.04.2009 в 02:21.
(Offline)
 
Ответить с цитированием
Старый 30.04.2009, 11:05   #13
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Застрял на ровном месте...

Поменяй кусок кода на это:

Collisions pl,zem,2,2
Collisions pl,obj,2,2


Repeat 

If KeyHit(1)
picked=CameraPick(cam,MouseX(),MouseY())

If picked
For b.palk=Each palk
If picked=b\ent
If EntityDistance(cam,picked)<10
palki=palki+1
FreeEntity b\ent
Delete b
EndIf
EndIf
Next
EndIf
EndIf
Потом проанализируй в чем ты допустил ошибки и почему этот код намного эффективнее
__________________
(Offline)
 
Ответить с цитированием
Старый 30.04.2009, 15:25   #14
ARTMAN
Оператор ЭВМ
 
Регистрация: 22.10.2008
Сообщений: 38
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Застрял на ровном месте...

tormoz, rак же я тебе благодарен, спасибо тебе большое!!!

Всем кто отозвался также спасибо!

Тема закрыта...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com