forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Вопрос-Ответ (для новичков) (http://forum.boolean.name/showthread.php?t=7886)

IGR 11.01.2010 02:10

Ответ: Вопрос-Ответ (для новичков)
 
ну скорей тут трабла в путях к файлам текстур для модели !!

KingMaks 11.01.2010 16:22

Ответ: Вопрос-Ответ (для новичков)
 
Есть у меня тип:
Код:

Type enemys
 Field obj
 Field health
End Type

Потом создаються три врага:
Код:

For i = 1 To 3
  e.enemys = New enemys
  e\health = 100
  e\obj = CopyEntity(enemy)
  EntityType e\obj,typeenemy
If i = 1 Then PositionEntity e\obj,0,2,0
If i = 2 Then PositionEntity e\obj,0,2,-5
If i = 3 Then PositionEntity e\obj,0,2,-10
Next

Далее ети враги какбы двигаються:
Код:

For e.enemys = Each enemys
If EntityDistance(player,e\obj) > 1 And EntityDistance(player,e\obj) < 10 Then TurnEntity e\obj,0,DeltaYaw(e\obj,player)*0.03,0
If EntityDistance(player,e\obj) > 1 And EntityDistance(player,e\obj) < 10 Then MoveEntity e\obj,0,0,0.03
MoveEntity e\obj,0,-0.1,0
Next

Все работает нормально, но когда жмеш паузу возвращаешься вглавное меню и заново жмеш старт выдает ошибку в строчке:

If EntityDistance(player,e\obj) > 1 And EntityDistance(player,e\obj) < 10 Then TurnEntity e\obj,0,DeltaYaw(e\obj,player)*0.03,0

entity does not exist

почему второй раз оно необнаружает e\obj? и как исправить?

impersonalis 11.01.2010 16:38

Ответ: Вопрос-Ответ (для новичков)
 
веротяно меню где-то вызвает clearworld
после чего типы отсаются с битыми дескрипторами сущностей.

KingMaks 11.01.2010 16:44

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от impersonalis (Сообщение 133067)
веротяно меню где-то вызвает clearworld
после чего типы отсаются с битыми дескрипторами сущностей.

Да ClearWorld есть
и как исправить? чтобы клеарворлд осталось?

Reizel 11.01.2010 18:03

Ответ: Вопрос-Ответ (для новичков)
 
Если так оставлять то потом придется каждый тип переписывать заного, т.е. примерно так:
Function Menu()
ClearWorld();
delete each Enemys;
delete each Obj;
end function

А после вызова этой функции создавать заного всех врагов, объекты, и т.д.
Так что выбрасывай Clear() пока не поздно и учись программировать правильно. Это не сложно :)

KingMaks 11.01.2010 20:27

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Павел (Сообщение 133072)
Если так оставлять то потом придется каждый тип переписывать заного, т.е. примерно так:
Function Menu()
ClearWorld();
delete each Enemys;
delete each Obj;
end function

А после вызова этой функции создавать заного всех врагов, объекты, и т.д.
Так что выбрасывай Clear() пока не поздно и учись программировать правильно. Это не сложно :)

Правильно ето FreeEntity ? или как мне тогда уровень стереть?

KingMaks 11.01.2010 20:33

Ответ: Вопрос-Ответ (для новичков)
 
Ну вот функция загружает уровень:
Код:

Function level_1()
player = CreateSphere(8)
EntityType player,typeplayer
EntityRadius player,1.5
EntityAlpha player,0
PositionEntity player,0,9,20

camera = CreateCamera(player)
ScaleEntity camera,0.5,0.5,0.5
PositionEntity camera,0,2,0

player_hand = LoadAnimMesh("Data\player\player.b3d",camera)
player_atack = LoadAnimSeq(player_hand,"Data\player\player_atack.b3d")
player_atack2 = LoadAnimSeq(player_hand,"Data\player\player_atack2.b3d")
player_walk = LoadAnimSeq(player_hand,"Data\player\player_walk.b3d")
TurnEntity player_hand,0,90,0
PositionEntity player_hand,0,-1,1

enemy  = LoadAnimMesh("Data\enemy\enemy.b3d")
PositionEntity enemy,0,2,0
enemy_walk = LoadAnimSeq(enemy,"Data\enemy\enemy_walk.b3d")
enemy_atack = LoadAnimSeq(enemy,"Data\enemy\enemy_atack.b3d")
enemy_idle = LoadAnimSeq(enemy,"Data\enemy\enemy_idle.b3d")
HideEntity enemy
EntityType enemy,typeenemy

;---Create Enemys---
For i = 1 To 3
  e.enemys = New enemys
  e\health = 100
  e\obj = CopyEntity(enemy)
  EntityType e\obj,typeenemy
If i = 1 Then PositionEntity e\obj,0,2,0
If i = 2 Then PositionEntity e\obj,0,2,-5
If i = 3 Then PositionEntity e\obj,0,2,-10
Next
;-----------------------------

shword_cub = CreateSphere(8)
ScaleEntity shword_cub,0.5,0.5,0.5
HideEntity shword_cub

light = CreateLight(2)
RotateEntity light,0,0,0
PositionEntity light,0,10,0

sky = CreateSphere(64)
ScaleEntity sky,100,100,100
FlipMesh sky
texsky = LoadTexture("Data\levels\level1\texsky.jpg")
EntityTexture sky,texsky

maze_level_1 = LoadAnimMesh("Data\levels\level1\level1.b3d")
EntityType maze_level_1,typesolid
PositionEntity maze_level_1,0,-1,0
levels = "Level_Play"
TurnEntity sky,0,1,0
End Function

Вот удаляет:
Код:

Function Delete_level_1()
FreeEntity player
FreeEntity enemy
FreeEntity light
FreeEntity sky
FreeEntity maze_level_1
For e.enemys = Each enemys
Delete e
Next
End Function

Но почимуто после возврата в главное меню, и нажатие заново старт
и врагов стает уже не три а шесть потом девять и т.д.
Как удалить врагов?Или как правильнее написать?

ABTOMAT 11.01.2010 21:40

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

For e.enemys = Each enemys
Delete e
Next
Гиде удаление модельки?

Код:

For e.enemys = Each enemys
FreeEntity e\моделька монстра
Delete e
Next


Reizel 11.01.2010 22:24

Ответ: Вопрос-Ответ (для новичков)
 
King я только не понимаю, а нафига при выходе в меню удолять весь мир??? Смысл??? А потом заного грузить... Маразм... Сделай по проще, обычной паузой

KingMaks 11.01.2010 22:51

Ответ: Вопрос-Ответ (для новичков)
 
Павел

пауза есть
нажимаеш паузу и там две строки вернуться вигру-игра продолжаеться
и выйти в главное меню - весь мир удаляесть и выходит в главное меню

игра работает вроде правельно
но написано как вы говорите неопрятным кодом
чем дальше тем чаще ошибки непонятные

поетому я занелся тетрисом как мне и советывали раньше
ламаю щас голову:)

NitE 12.01.2010 06:47

Ответ: Вопрос-Ответ (для новичков)
 
тетрис это очень сложно.
попробуй лучше делать дальше то что делал (может заного но всё-же)

is.SarCasm 12.01.2010 09:46

Ответ: Вопрос-Ответ (для новичков)
 
Можно ли как то узнать длину строки зная размер шрифта? Вроде не у всех букв одинаковый разме.р

H@NON 12.01.2010 13:24

Ответ: Вопрос-Ответ (для новичков)
 
StringWidth

KingMaks 12.01.2010 20:25

Ответ: Вопрос-Ответ (для новичков)
 
Есть ли команда :
"Если обьект в поле зрения камеры"

IGR 12.01.2010 20:35

Ответ: Вопрос-Ответ (для новичков)
 
эм...
Цитата:

EntityInView ( entity,camera )
Параметры:
entity - указатель объекта
camera - указатель камеры

Описание:
Возвращает true, если объект находится в поле зрения данной камеры (т.е. видим).

Если объект типа mesh (сетчатая модель), то для него будет проверяться на видимость описанный вокруг объекта параллелепипед (границы объекта).

Для всех других типов объектов будет проверяться только центральная точка объекта.
PS: кто-то пользуется http://help.boolean.name/commands/index.htm ??


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

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