forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Unity (http://forum.boolean.name/forumdisplay.php?f=147)
-   -   Gotaka. Адвенчура с легкой примесью RPG. (http://forum.boolean.name/showthread.php?t=8547)

NitE 09.07.2009 18:38

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
гдето в коде у тя Flip 1 или Flip 0 незнаю почему он кривой если 1 значит ограничитель фпс стоит (должно быть 60)

Fatalix3d 09.07.2009 19:24

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Ну стоит он у меня в конце перед Wend (стоял просто "flip"), спасибо исправил.

IGR 09.07.2009 19:26

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Цитата:

Тестировал у друга на ноуте
ну судя по google.com частота обновления экрана ноутов приблизительно 60 !!
44 откуда ?? :dontknow:

Fatalix3d 09.07.2009 19:33

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Не знаю, завтра с flip 60 протестирую там и гляну что да как изменилось (хотя действительно ведь у ЖК мониторов в большинстве фиксированная развертка 60Hz).

NitE 09.07.2009 22:18

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Цитата:

flip 60
что это ? флип тока 1 или 0

Nex 10.07.2009 17:33

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
flip 60 :-D

Fatalix3d 15.07.2009 17:05

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Вложений: 2
Небольшой UP! Вид в игре стал от 3 лица отсюда и пара сложностей, ну обо всем по порядку: 1) При нажатие правой кнопки игрок переходит в режим взаимодействия с миром (появляется курсор, а персонаж не может передвигаться ), то есть мы хотим грибов насобирать на супчик:-D ранее я планировал через camera pick сделать но поскольку теперь вид от 3 лица а взаимодействие с предметами идет через курсор мыши, вопрос как проверять находится ли курсор мыши на объекте или нет.

P.S если спрашиваю что то очевидное прошу не пинать)

MiXaeL 15.07.2009 18:09

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Аналогично, через CameraPick cam, MouseX(),MouseY()

ABTOMAT 15.07.2009 18:13

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Не забудь про EntityPickMode
З.Ы. Мужика сам моделлил/текстурил? Скрины внушают

IGR 15.07.2009 18:20

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Очень часто в играх персонаж имеет возможность взаемодействовать с разными предметами и сущностями, которые описываются разными типами даных !!
Например, есть типы предметов (Type TItems), есть тип врагов (Type TEnemy), есть тип друзей (Type TFriends) и т.д. !! Ну что угодно короче... ;-)
Одним из самых популярных методов взаимодействия персонажа с этими предметами и сущностями является pick (команды CameraPick и т.д.) !! Естественно, если мы взаемодействуем с предметом - мы его подымаем и кладем себе в инвентарь например, если с врагом - начинаем бой, если с другом - начинаем разговор и т.д. !!
Что бы начать соответствующие взаимодействие нужно во-первых знать к какому класу он относится и какой именно объект класса "активирован" (т. е. его Handle) !!
Все это можна зделать с помощью замечательных команд: NameEntity, EntityName !!
Смысл в чем ?? При создании объекта, нужную информацию в виде строки мы записываем объекту в "Имя":

Код:

temp.TCube = New TCube
temp\ent = CreateCube()
;        здесь мы записываем идентификатор типи и его хендп (Handle)
NameEntity temp\ent, Str(Handle(temp))+"cube"

Потом, когды мы вибрали какой-то объект, мы читаем эту информацию:

Код:

;        читаем информацию
ent_info$ = EntityName(f_picked)
;        извлекаем идентификатор типа
ent_type$ = Right(ent_info, 5)

Потом, выбираем какое действие нам выполнять:

Код:

Select ent_type$
        Case "items"
                obj1.TItems = Object.TItems(Int(ent_info))
                ; поднимаем предмет
        Case "enemy"
                obj1.TEnemy = Object.TEnemy(Int(ent_info))
                ; начинаем бой
        Case "frend"
                obj1.TFriend = Object.TFriend(Int(ent_info))
                ; начинаем общятся
End Select


Все !! Далее код примера !! Может поможет разобраться лучше !! ;-)

Код:

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

SeedRnd (MilliSecs())

Global prev_picked% = 0

posXrange = 20
posYrange = 20
posZrange = 20

cam = CreateCamera()
PositionEntity cam,0,40,-100

;        тип куба
Type TCube
        Field ent%
        Field size%
        Field alpha#
End Type

;        тип сферы
Type TSphere
        Field ent%
        Field radius%
        Field alpha#
End Type

;        тип конуса
Type TCone
        Field ent%
        Field height%
        Field radius%
        Field alpha#
End Type

;        функция создания куба
Function Create_Cube.TCube(f_posX%, f_posY%, f_posZ%)

        temp.TCube = New TCube
        temp\ent = CreateCube()
                NameEntity temp\ent, Str(Handle(temp))+"cube"
                EntityPickMode temp\ent, 2
                PositionEntity temp\ent, f_posX, f_posY, f_posZ
        temp\size = Rand(2, 5)
                ScaleEntity temp\ent, temp\size, temp\size, temp\size
        temp\alpha = Rnd(0.2, 0.8)
                EntityAlpha temp\ent, temp\alpha

        Return temp

End Function

;        функция создания сферы
Function Create_Sphere.TSphere(f_posX%, f_posY%, f_posZ%)

        temp.TSphere = New TSphere
        temp\ent = CreateSphere()
                NameEntity temp\ent, Str(Handle(temp))+"sfer"
                EntityPickMode temp\ent, 2
                PositionEntity temp\ent, f_posX, f_posY, f_posZ
        temp\radius = Rand(3, 8)
                ScaleEntity temp\ent, temp\radius, temp\radius, temp\radius
        temp\alpha = Rnd(0.2, 0.8)
                EntityAlpha temp\ent, temp\alpha

        Return temp

End Function

;        функция создания конуса
Function Create_Cone.TCone(f_posX%, f_posY%, f_posZ%)

        temp.TCone = New TCone
        temp\ent = CreateCone()
                NameEntity temp\ent, Str(Handle(temp))+"cone"
                EntityPickMode temp\ent, 2
                PositionEntity temp\ent, f_posX, f_posY, f_posZ
        temp\radius = Rand(3, 8)
        temp\height = Rand(3, 8)
                ScaleEntity temp\ent, temp\radius, temp\height, temp\radius
        temp\alpha = Rnd(0.2, 0.8)
                EntityAlpha temp\ent, temp\alpha

        Return temp

End Function

cube1.TCube = Create_Cube(-30, 10, -30)
cube2.TCube = Create_Cube(-30, 10, 0)
cube3.TCube = Create_Cube(-30, 10, 50)

sphere1.TSphere = Create_Sphere(0, 10, -30)
sphere2.TSphere = Create_Sphere(0, 10, 0)
sphere3.TSphere = Create_Sphere(0, 10, 50)

cone1.TCone = Create_Cone(30, 10, -30)
cone2.TCone = Create_Cone(30, 10, 0)
cone3.TCone = Create_Cone(30, 10, 50)


Function PickControl(f_picked%)

If f_picked<>prev_picked Then

ent_info$ = EntityName(f_picked)
ent_type$ = Right(ent_info, 4)

Select ent_type$
        Case "cube"
                cube.TCube = Object.TCube(Int(ent_info))
                EntityColor cube\ent, Rand(0, 255), Rand(0, 255), Rand(0, 255)
        Case "sfer"
                sfer.TSphere = Object.TSphere(Int(ent_info))
                ScaleEntity sfer\ent, Rand(3, 8), Rand(3, 8), Rand(3, 8)
        Case "cone"
                cone.TCone = Object.TCone(Int(ent_info))
                EntityAlpha cone\ent, Rnd(0.2, 0.8)
                ScaleEntity cone\ent, Rand(3, 8), Rand(3, 8), Rand(3, 8)
End Select


prev_picked = f_picked
EndIf

End Function




Repeat

mx=MouseX()
my=MouseY()

picked=CameraPick(cam,mx,my)
If picked<>0 PickControl(picked)

RenderWorld()
Flip

Until KeyHit(1)
End


Fatalix3d 15.07.2009 18:24

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
IGR большое спасибо за столь содержательный ответ!

ABTOMAT 15.07.2009 19:27

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
IGR, в EntityName можно напрямую заносить Handle объекта типа и таким образом обойтись без перебора вообще :)
Смотри тутор Импера Object-Handle

IGR 15.07.2009 19:50

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
ABTOMAT, чет я непонял !! я вроде и заношу:
Код:

NameEntity temp\ent, Str(Handle(temp))+"cone"

Tadeus 15.07.2009 19:51

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Цитата:

Сообщение от ABTOMAT (Сообщение 111025)
IGR, в EntityName можно напрямую заносить Handle объекта типа и таким образом обойтись без перебора вообще :)
Смотри тутор Импера Object-Handle

А где там перебор?

ABTOMAT 15.07.2009 23:32

Ответ: Gotaka. Адвенчура с легкой примесью RPG.
 
Пардон, протупил
Чё-то спросонья с мозгами ситуация 3.14


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

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