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=5649)

JeSss 25.01.2008 16:21

Функция по координатам...
 
Здрасте фсем,у меня вопрос:
Как сделать, например, открывание двери, нето как её открыть а вот что...
... я хачю чтобы дверь открылась когда ты стоиш в определённых координатах и соответственно должна проигрываться анимация в тех же координатах в тоже время как открывается дверь, вот...:SOS:

Crystal 25.01.2008 16:29

Ответ: Функция по координатам...
 
ИМХО в таком случае надо проверить расстояниее от двери до юзера.

Код:

if EntityDistance(дверь,юзер)<расстояние then открываем дверь

JeSss 25.01.2008 16:36

Re: Ответ: Функция по координатам...
 
Цитата:

Сообщение от Blitzerg (Сообщение 75687)
ИМХО в таком случае надо проверить расстояниее от двери до юзера.

Код:

if EntityDistance(дверь,юзер)<расстояние then открываем дверь

СПС, позже опробую, как буду дома!

HolyDel 25.01.2008 16:44

Ответ: Функция по координатам...
 
Je$ss, открывай дверь програмно. RotateEntity dverro,0,uglo_dvrro,0 тебе в помощь

JeSss 25.01.2008 17:04

Re: Функция по координатам...
 
Я делаю немножко по другому, а чё означаед dverro и uglo_dvrro, там нечё менять ненадо? Ик стати, я сделал чтоб дверь открывалась, а как сделать чтобы ПЕРС ещё и делал анимациЮ!

Crystal 25.01.2008 17:17

Ответ: Функция по координатам...
 
Анимацию чего?
Чтобы человек протянул руку к двери, потянул ручку на себя, и дверь открылась?

JeSss 25.01.2008 17:50

Re: Функция по координатам...
 
Кароч у меня уже есть анимация в Формате *b3d и там уже вся анимация, открывания, нужно лиш чтобы анимация проигрывалась вместе с тем когда открывается дверь...

Crystal 25.01.2008 17:54

Ответ: Функция по координатам...
 
Какая анимация открывания?
Ты анимировал дверную раму с открывающейся дверью?

Если да то зря, лучше дверь поворачивать по оси пивота,
а пивот сам сместить к петлям двери.

JeSss 25.01.2008 18:39

Re: Функция по координатам...
 
НЕДД! Я СДЕЛАЛ АНИМАЦИЯ ПЕРСОНАЖА... а дверь так поворачиваю, в Блитце...

HolyDel 25.01.2008 18:41

Ответ: Функция по координатам...
 
Animate
AnimateMD2

LoadAnimMesh
LoadAnimSeq
ExtractAnimSeq

JeSss 25.01.2008 21:01

Re: Функция по координатам...
 
Непонял... кароче сам разберусь, если чё спрашу.
HolyDel: так ответь на мой вопрос: а чё означаед dverro и uglo_dvrro, там нечё менять ненадо?

dimanche13 25.01.2008 21:24

Ответ: Функция по координатам...
 
:to_babruysk: Как по падонковски спрашиваешь, так Холи и отвечает...
аццкие переменные "дверко" и "угло_дверко" :to_babruysk:

JeSss 25.01.2008 21:25

Re: Функция по координатам...
 
Не, ну я понимаю что вместо dvvero нужно ставить модель двери, а угло_дверо, там то чо...

H@NON 25.01.2008 21:27

Ответ: Функция по координатам...
 
JeSss: dverro означает название твоей двери, uglo_dvrro - это угол поворота двери. ХолиДел написал команду с помощью которой ты сможешь поворачивать дверь, а вместо dverro и uglo_dvrro ты должен подставить свои переменные, если ты используешь такие же переменные, то uglo_dvrro у тебя будет следить за углом поворота двери( уже писал ;) ), вот его значением ты и должен контролировать поворот двери, при чем это значение угла поворота двери не должно превышать какое-либо значение чтобы у тебя дверь не могла делать полный разворот. Делаешь с помощью обычных условий:
If dver_status = open then
if uglo_dvrro < max_ugl then
uglo_dvrro = uglo_dvrro + speed
RotateEntity dver, 0, uglo_dvrro, 0
EndIf
ElseIf dver_status = close then
if uglo_dvrro > min_ugl then
uglo_dvrro = uglo_dvrro - speed
RotateEntity dver, 0, uglo_dvrro, 0
EndIf
EndIf

код не рабочий, это псевдокод, то есть просто алгоритм

JeSss 25.01.2008 21:30

Re: Ответ: Функция по координатам...
 
Цитата:

Сообщение от Blitzerg (Сообщение 75687)
Код:

if EntityDistance(дверь,юзер)<расстояние then открываем дверь

А как сделать чтобы всё это было при НАЖАТИИ КНОПКИ???

JeSss 25.01.2008 21:31

Re: Ответ: Функция по координатам...
 
Цитата:

Сообщение от H@NON (Сообщение 75744)
код не рабочий, это псевдокод, то есть просто алгоритм

Эт как, нерабочий???

H@NON 25.01.2008 21:32

Ответ: Функция по координатам...
 
Если Нажатие_кнопки ,то , если дистанция меньше #, то открыть_дверь

JeSss 25.01.2008 21:34

Re: Функция по координатам...
 
Вобщем можно в куске кода плииииииз
P.S. Всё в месте, если можно..

H@NON 25.01.2008 21:37

Ответ: Функция по координатам...
 
как будто ты в коде разбираешься лучше чем в словах. ты прирожденный копи/пастер, лучше займись фасовкой продуктов, там всего два действия: взять, положить.
На, так и быть, больше не жди от меня подачек:
Код:

; ID: 1970
; Author: Dan at D-Grafix dot com
; Date: 2007-03-16 05:42:06
; Title: Doors 101 - Simple multiple door system
; Description: Very simple

Graphics3D 640,480
SetBuffer BackBuffer()

light=CreateLight(2)
MoveEntity light,-5,5,-5


;make a camera
cam=CreateCamera()
MoveEntity cam,4,2,-5


;create cutom type
Type doormesh
  Field door,activate,doorstate,speed#
End Type

;create first door object
d1.doormesh= New doormesh
d1\activate=0
d1\doorstate=0
d1\door=CreateCube()
PositionMesh d1\door,1,0,0
ScaleEntity d1\door,1,2,.1
EntityColor d1\door,255,0,0

;create a second door object
d2.doormesh= New doormesh
d2\activate=0
d2\doorstate=0
d2\door=CopyEntity (d1\door)
MoveEntity d2\door,-2,0,0
EntityColor d1\door,0,255,0


;point camera at door just so we can see whats going on
PointEntity cam,d1\door



;main loop
Repeat

    If KeyHit(2) D1\ACTIVATE=1
    If KeyHit(3) D2\ACTIVATE=1

   
    ;do world updates
    UpdateAllDoors()
    RenderWorld
   
    ;render 2d from backbuffer
    Text 0,0,"Press '1' or '2' To open/close doors"
    Flip


Until KeyHit(1)




;------------------------End of main code--------------------------------------------




Function UpdateAllDoors()  ;gets called every loop
For d.doormesh=Each doormesh
  Select d\doorstate
      Case 0 ;if standing shut
        If d\activate        ;this is your initial trigger
          d\activate=0      ;reset trigger
          d\doorstate=2        ;door is shut so set open trigger to beginon Next loop
          ;playsound (CREAK)
      EndIf

    Case 1  ; if standing open
      If d\activate
          d\activate=0
          d\doorstate=3
          ;playsound (CREAK)
      EndIf

    Case 2  ;if opening door
      If EntityYaw(d\door)<90 d\speed=d\speed+0.02 Else d\doorstate=1
      If EntityYaw(d\door)>90 d\speed=0.00: RotateEntity d\door,0,90,0
   

    Case 3 ;if closing door
      If EntityYaw(d\door)>0 d\speed=d\speed-0.02 Else d\doorstate=0
      If EntityYaw(d\door)<0
        d\speed=0.00:
        RotateEntity d\door,0,0,0:
        ;playsound (SLAM)
      EndIf

  End Select

  TurnEntity d\door,0,d\speed,0
   
Next
End Function


JeSss 25.01.2008 21:40

Re: Функция по координатам...
 
А как понять, что двери открываются когда я рядом, а не в Чернобыле)))

H@NON 25.01.2008 21:44

Ответ: Функция по координатам...
 
для этого нужно приехать из Чернобыля к двери, проверить расстояние до нее, и возвращаться обратно.

JeSss 25.01.2008 22:45

А всё, поняна, канешн долго ехал, но оно того стоило)))

И вот какой вывод, всёравно открывается...
Нужно ФправиТь!

Taugeshtu 26.01.2008 00:37

Ответ: Функция по координатам...
 
Извините за ОФФТОП!
Function JeSss_update()
If моск_exist Then ФправиТь_м0ск()
End Function
ДжеСсс, огромной тебе удачи - с твоей способностью учится она будет катастрофически необходима

JeSss 26.01.2008 01:24

Re: Функция по координатам...
 
Всё, решил проблему!

alcoSHoLiK 26.01.2008 17:48

Ответ: Функция по координатам...
 
avel

Личные сообщения реализованы не для красоты, а для пользования ими.

JeSss 27.01.2008 00:36

Re: Функция по координатам...
 
А кста, на мой ответ так и неответили, как сделать чтобы функция выполнялась когда ты находишся в определёных координатах... а мне подсказали только если РАСТОЯНИЕ от предмета до чела, а мне нужно кое что на строку выше)

BAK$$$ 27.01.2008 01:13

Re: Функция по координатам...
 
Определяешь координаты своего игрока (EntityX(player),EntityY(player)...)Потом проверяешь их и проигрываешь анимацию...


JeSss 27.01.2008 01:19

Re: Функция по координатам...
 
а можно в куске кода?, по словам не оч. разборчиво...
P.S. не хачу опять показаца Копи-пастом но так прост реально непонятно...

BAK$$$ 27.01.2008 01:46

Re: Функция по координатам...
 
If EntityX(player)=1 And EntityY(player)=1 And EntityX(player)=1 Then...
Помоему так...

HolyDel 27.01.2008 01:59

Ответ: Функция по координатам...
 
Вложений: 1
хм. если тока понять, то смотри аттач ;)
скажи нет копипасту! мы за здоровый се.., тьфу, кодинг!

jimon 27.01.2008 09:24

Ответ: Функция по координатам...
 
HolyDel
реально идея :) давайте ему скриншоты кода давать ...
хотя бы минимально платить за код усилиями прийдется - переписывать

newman 27.01.2008 10:50

Ответ: Функция по координатам...
 
Цитата:

HolyDel солидарен с jimonом! хорошая идея! давайте теперь весь код картинками выкладывать...
Идея плохая(очень плохая). В ней 2 огромных минуса:
1)Большой кусок кода не выложиш, придётся за несколько раз.
2)Да и копипастеру не составит труда воткнуть картинку в прогу по распознаванию текста и также благополучно скопипастить.

JeSss 27.01.2008 11:52

Re: Функция по координатам...
 
HolyDel
И типо всё это пихать в главный цикл?

H@NON 27.01.2008 11:55

Ответ: Функция по координатам...
 
пихай !

JeSss 27.01.2008 12:23

Re: Функция по координатам...
 
oKe!

HolyDel 27.01.2008 14:23

Ответ: Функция по координатам...
 
зачем это все пихать в главный цикл?
ф-ии надо пихать до главного цикла, или после.
а строчку с примером да - в главный цикл, но со своими цифрами.

JeSss 27.01.2008 20:22

Re: Функция по координатам...
 
ок, спс!

JeSss 29.01.2008 14:57

Re: Функция по координатам...
 
а нельзя сделать чтонить попроще, ну например:
PositionEntity her, 0,0,0 Then
MoveEntity her, 0,0,2
Эт я так, насчёт МовеЕнтити пример привёл... Ну вообщем чтото вроде этого мона замутить?

HolyDel 29.01.2008 15:31

Ответ: Функция по координатам...
 
Цитата:

Ну вообщем чтото вроде этого мона замутить?
false

JeSss 29.01.2008 15:48

Re: Функция по координатам...
 
Чё??

johnk 29.01.2008 15:49

Ответ: Функция по координатам...
 
Ну здрасьте.
True - истина.
False - ложь.

JeSss 29.01.2008 15:54

Re: Функция по координатам...
 
эм, а это тут причём??? Типо то что я написал не поможет?

johnk 29.01.2008 16:10

Ответ: Функция по координатам...
 
Цитата:

эм, а это тут причём??? Типо то что я написал не поможет?
Стебаешься? Смотри что за цитату выдрал Холи + руководствуйся моим постом.

moka 29.01.2008 16:11

Ответ: Функция по координатам...
 
Милый Джесс, видишь пост Ув. HolyDel'а?
И твой 38 пост - ты задал вопрос.
Он ответил, далее, твой 40 пост "Чё?", в 41 посту пояснение.

newman 29.01.2008 18:53

Ответ: Функция по координатам...
 
Цитата:

Милый Джесс, видишь пост Ув. HolyDel'а?
И твой 38 пост - ты задал вопрос.
Он ответил, далее, твой 40 пост "Чё?", в 41 посту пояснение.
Бесполезно объяснять. Не поможет.

Цитата:

а нельзя сделать чтонить попроще, ну например:
PositionEntity her, 0,0,0 Then
MoveEntity her, 0,0,2
Эт я так, насчёт МовеЕнтити пример привёл... Ну вообщем чтото вроде этого мона замутить?
Пишу по русски. НЕЛЬЗЯ.

Raiter 29.01.2008 19:01

Ответ: Функция по координатам...
 
Цитата:

а нельзя сделать чтонить попроще, ну например:
PositionEntity her, 0,0,0 Then
MoveEntity her, 0,0,2
Эт я так, насчёт МовеЕнтити пример привёл... Ну вообщем чтото вроде этого мона замутить?
Перевожу твой код:

[PositionEntity her, 0,0,0] ПоместитьОбъект хер (:-)) в точку 0,0,0, [Then] Тогда
[MoveEntity her, 0,0,2 ] ДвигатьОбъект хер ....

А теперь подумай о том может ли ЭТО работать?

newman 29.01.2008 19:18

Ответ: Функция по координатам...
 
Цитата:

а нельзя сделать чтонить попроще, ну например:
PositionEntity her, 0,0,0 Then
MoveEntity her, 0,0,2
Эт я так, насчёт МовеЕнтити пример привёл... Ну вообщем чтото вроде этого мона замутить?
Так нельзя.А так можно:

Код:

tr=0

Repeat

playerx#=EntityX(player)
playery#=EntityY(player)
playerz#=EntityZ(player)


If playerx#=0 And playery#=0 And playerz#=0 Then tr=1
If tr=1 Then MoveEntity player,0,0,2


HolyDel 29.01.2008 19:23

Ответ: Функция по координатам...
 
скока уже можно твердить.
НЕ СРАВНИВАТЬ FLOAT ВЕЛИЧИНЫ ОПЕРАТОРОМ [b]=[b]
он может давать неправильный результат

newman 29.01.2008 19:34

Ответ: Функция по координатам...
 
Хорошо сейчас исправлю.

Код:

tr=0

Repeat

playerx=EntityX(player)
playery=EntityY(player)
playerz=EntityZ(player)


If playerx=0 And playery=0 And playerz=0 Then tr=1
If tr=1 Then MoveEntity player,0,0,2


JeSss 29.01.2008 20:39

Re: Функция по координатам...
 
спс, newman, твой код мне помоГ (рифма)) )

HolyDel 29.01.2008 21:04

Ответ: Функция по координатам...
 
вообще, можно использовать функцию для сравнения вещественных и целых чичел (или вещественных и вещественных)

function eq(a#,b#,e#=0.01)
if abs(a-b)<e then return 1 else return 0
end fuction

применяь так:

if eq(a#,5.33) then ....
что примерно подходит этому:
if a#=5.33 then ....


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

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