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

Unodeya 04.06.2009 14:15

Вопрос: Препятствия на пути игрока
 
Я управляю игроком с помощью CamPick'a. Т.е где кликаю по плэйну туда идёт игрок. Вопрос: Если на пути игрока есть припятствия например куб или стена или здание. Если я кликну за кубом или персонаж должен остановиться. Я так понимаю нужно использовать LinePick но непонимаю как именно.. Подскажите пожалуйста! Заранее огромное спасибо!

Amatsu 04.06.2009 16:36

Ответ: Вопрос: Препятствия на пути игрока
 
LinePick ( x#,y#,z#,dx#,dy#,dz#[,radius#] )

1) x,y,z - координаты персонажа

2) dx,dy,dz - вектор пика. например
dx=px-x dy=py-y dz=pz-z , где px,py,pz - координаты точки, куда должен дойти персонаж, а x,y,z - координаты персонажа

3) radius - толщина линии пика

Sleepybear 04.06.2009 18:03

Ответ: Вопрос: Препятствия на пути игрока
 
не понял, он у тебя должен дойти до препятствия и остановится или после клика просто не двигатся если есть препядствие ?

Unodeya 04.06.2009 18:26

Ответ: Вопрос: Препятствия на пути игрока
 
оО Amatsu спасибо) Я фан твоей JRPG) Помоги мне правильно реализовать это сдесь :

MH1=MouseHit(1)
MH2=MouseHit(2)
MH3=MouseHit(3)
If MH1
CameraPick (Camera, MouseX(),MouseY())
If PickedEntity()=plane

PX#=PickedX ()
PZ#=PickedZ ()

PositionEntity PPick,PX,0,PZ
PointEntity(Player,PPick)
TurnEntity Player,0,180,0

EndIf
EndIf

If EntityDistance(Player,PPick)>.1

If AnimSeq(Player)=0
Animate Player,1,.5,1,10
EndIf
MoveEntity Player,0,0,-0.16
Else
If AnimSeq(Player)=1
Animate Player,2,1,0,10
EndIf
EndIf

Дополни пожалуйста как будет правильно! Заранее огромное тебе спасибо)

Sleepybear Мне нужно если перед игроком здание или любой обьект если я кликну на плейн дальше здания - он стоял на месте)

Amatsu 04.06.2009 19:26

Ответ: Вопрос: Препятствия на пути игрока
 
Я еще ни одной JRPG не сделал 0_о

По поводу кода, не силен я в разбирании чужих текстов. Но, если уж просишь, я бы сделал так:
Код:

MH1%=MouseHit(1)
MH2%=MouseHit(2)
MH3%=MouseHit(3)

If MH1 Then
        CameraPick (Camera, MouseX(),MouseY())

        If PickedEntity()=plane Then
                PX#=PickedX ()
                PZ#=PickedZ ()
                       
                PositionEntity PPick,PX,0,PZ
                PointEntity(Player,PPick)
        EndIf
EndIf

If LinePick(EntityX(Player,1),EntityY(Player,1),EntityZ(Player,1),EntityX(PPick,1)-EntityX(Player,1),EntityY(PPick,1)-EntityY(Player,1),EntityZ(PPick,1)-EntityZ(Player,1)) Then
        If Sqr((PickedX()-EntityX(Player,1))^2+(PickedY()-EntityY(Player,1))^2+(PickedZ()-EntityZ(Player,1))^2)>0.16 Then
                If AnimSeq(Player)<>1 Then Animate Player,1,.5,1,10
                MoveEntity Player,0,0,0.16
        Else
                If AnimSeq(Player)<>0 Then Animate Player,2,1,0,10
        EndIf
Else
        If EntityDistance(Player,PPick)>0.16 Then
                If AnimSeq(Player)<>1 Then Animate Player,1,.5,1,10
                MoveEntity Player,0,0,0.16
        Else
                If AnimSeq(Player)<>0 Then Animate Player,2,1,0,10
        EndIf
EndIf



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

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