Gamestudio Links
Zorro Links
Newest Posts
Newbie Questions
by fairtrader. 12/06/23 11:29
Zorro Trader GPT
by TipmyPip. 12/04/23 11:34
Square root rule
by Smallz. 12/02/23 09:15
RTest not found error
by TipmyPip. 12/01/23 21:43
neural function for Python to [Train]
by TipmyPip. 12/01/23 14:47
Xor Memory Problem.
by TipmyPip. 11/28/23 14:23
Training with command line parameters
by TipmyPip. 11/26/23 08:42
Combine USD & BTC Pairs In Asset Loop
by TipmyPip. 11/26/23 08:30
AUM Magazine
Latest Screens
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Who's Online Now
7 registered members (3run, miwok, AndrewAMD, Quad, TipmyPip, fairtrader, 1 invisible), 637 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
fairtrader, hus, Vurtis, Harry5, KelvinC
19019 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
mouse_click with box? #260900
04/14/09 14:54
04/14/09 14:54
Joined: Jun 2008
Posts: 428
Rasch Offline OP
Senior Member
Rasch  Offline OP
Senior Member

Joined: Jun 2008
Posts: 428
hi people,

i use the EVENT_CLICK function. And everything works fine. there is no problem with the code but the mouse only detects the entity if you are over the entity. And i don´t mean over the entitys bounding box. Just if you are exactly on the model you can click or touch it.

Is there a way to make the entity mouse_detect whatever bigger? or is it possible to select via bounding box?

greets

Re: mouse_click with box? [Re: Rasch] #260934
04/14/09 18:03
04/14/09 18:03
Joined: Aug 2004
Posts: 1,345
Kyiv, Ukraine
VeT Offline

Serious User
VeT  Offline

Serious User

Joined: Aug 2004
Posts: 1,345
Kyiv, Ukraine
I think, trace comes through all polygons of all models... if you want bb selection, write your own code, wich would send a trace in the world and watching for bb's.


1st prize: Lite-C and Newton 2.17 by Vasilenko Vitaliy

Newton2 videos: http://tinyurl.com/NewtonVideos
LiteC+Newton2 discussion: http://tinyurl.com/NewtonWrapperDiscussion
Latest LiteC+Newton2 version(v23, from 29.10.2009): http://depositfiles.com/files/ae1l0tpro
Re: mouse_click with box? [Re: VeT] #260949
04/14/09 21:10
04/14/09 21:10
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
What about mouse_range?
This should solved your problem.

Last edited by Ralph; 04/14/09 21:10.
Re: mouse_click with box? [Re: Ralph] #260954
04/14/09 21:44
04/14/09 21:44
Joined: Jun 2008
Posts: 428
Rasch Offline OP
Senior Member
Rasch  Offline OP
Senior Member

Joined: Jun 2008
Posts: 428
@Ralph

Das erhöht ja nur meine Reichweite. Mir geht es einfach darum das er nicht das sichtbar des Modells nur selektiert sondern schon wenn die Maus etwas daneben ist das Modell selektiert smile

Re: mouse_click with box? [Re: Rasch] #260956
04/14/09 21:52
04/14/09 21:52
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Warum konvertierst du nicht die Mausposition in 3D Koordinaten(vec_for_screen) und machst dann per vec_dist eine prüfung wie weit die Maus von der Entity weg ist?

Also in etwa so:
Code:
VECTOR* temp = nullvector;
temp.x = mouse_pos.x;
temp.y = mouse_pos.y;
temp.z = 200;
vec_for_screen(temp,camera);
if(vec_dist(my.x,temp.x) > 400 && mouse_left == 1)
{
  //irgendwelcher Code den du ausführst
  //wenn die Maus im Umkreis von 400 Quants
  //zu dieser Entity ist und die linke Maustaste gedrückt wird.
}


MFG Ralph

Re: mouse_click with box? [Re: Ralph] #260963
04/14/09 22:10
04/14/09 22:10
Joined: Jun 2008
Posts: 428
Rasch Offline OP
Senior Member
Rasch  Offline OP
Senior Member

Joined: Jun 2008
Posts: 428
gut der Code ist schonmal hilfreich. Allerdings brauch ich das ganze so.

Ich hab meinen player vor mir (3rd person) und ich möchte mit der Maus gegner im Umkreis anklicken. Wenn ich das tue rennt mein Char dahin und fängt an sich mit ihnen zu "prügeln". Das ganze funktioniert, nur will ich nun das ich nicht mit der Maus direkt über das Mesh fahren muss sondern das meine Maus schon die Bounding Box als Modell erkennt.

Und genau das krieg ich nicht hin im Moment

Re: mouse_click with box? [Re: Rasch] #260967
04/14/09 22:39
04/14/09 22:39
Joined: Aug 2003
Posts: 127
Berlin, Germany
C
CHaP Offline
Member
CHaP  Offline
Member
C

Joined: Aug 2003
Posts: 127
Berlin, Germany
Ahja, also ich hätte einen Vorschlag.

Ist zwar nicht der aller Schönste aber er funktioniert.

Erstell dir in der Größe, wo der Spieler den Gegner schon anklicken kann, eine Box. Wenn es mehrere verschiedenen Feinde sind, brauchst du natürlich auch verschieden skalierte.

Diese Boxen werden dann jedem Gegner drübergesetzt. Das heißt: Diese Entitys sind umschlossen von denen. Fungieren also als Hülle.

Das sind am Ende die eigentlichen, anklickbaren Objekte im Level.
Es wird also nicht mehr der Gegner ansich klickbar gemacht, sondern die Box umhin herum. Somit musst du dann der Box das Handle des Gegners mit beim erstellen übergeben, um diesen dann indirekt zu selektieren. Oder du benutzt die Box allein als Ziel zum anvisieren, da die Box ja den selben Vektorursprung hat, wie die Gegner-Entity.

Zu guter letzt, werden die Boxen noch mit ENABLE_CLICK maskiert und bekommen das TRANSLUCENT Flag mit einem Alpha Wert von 0.1 oder kleiner. Damit sind diese sogut wie nicht sichtbar (Hoffe ich zumindest, habs noch nicht getestet.) und können trotzdem noch angeklickt werden. Zur Not kannst du noch das ZNEAR Flag setzen.

Versuchs mal. =)
Viel Glück!

Re: mouse_click with box? [Re: CHaP] #261001
04/15/09 08:45
04/15/09 08:45
Joined: Jun 2008
Posts: 428
Rasch Offline OP
Senior Member
Rasch  Offline OP
Senior Member

Joined: Jun 2008
Posts: 428
Diese Möglichkeit habe ich berits probeirt nur stecke ich fest bei übergeben das Handles. Wie genau soll das vonstatten gehen? Ich wähle meine Unit nämlich per mouse_ent und weise dieser dann einen Pointer zu (für die gerade anvisierte Unit)

Gruß

Re: mouse_click with box? [Re: Rasch] #261040
04/15/09 11:33
04/15/09 11:33
Joined: Aug 2003
Posts: 127
Berlin, Germany
C
CHaP Offline
Member
CHaP  Offline
Member
C

Joined: Aug 2003
Posts: 127
Berlin, Germany
Ach, das würde ich ganz einfach halten.

Da du ja, für jeden Gegner eine Box erstellt hast oder eine die in etwa, für alle Gegner konform ist, ist das Problem schon mal gelöst.

Ich versuch das mal Stichwortartig grob zu beschreiben:


Als erstes erstellen wir die Entitys.

Code:
   ENTITY* NewEnemy = ent_create("gegner.mdl",vector(x,y,z),Enemy)
   ENTITY* NewEnemyBox = ent_create("gegner_boxes.mdl",vector(x,y,z),EnemyBox)


Damit später der Gegner selektiert werden kann, übergeben wir das Handle der zum Gegner gehörigen Box.

Code:
   NewEnemyBox.skill1 = handle(NewEnemy);


Somit ist das Gegner-Handle jetzt in der entsprechenden Gegner-Box hinterlegt.

In der FUNCTION von der EnemyBox musst du natürlich auch dafür sorgen, dass diese Box dem Gegner folgt, also ständig die 1zu1 Vektoren inne hat. Der einfachste Weg herfür ist auch das entsprechende Handle zu benutzen.

Code:
void EnemyBox()
{
   ENTITY* pMyEnemy = ptr_for_handle(my.skill1);
   while(1)
   {
      vec_set(my.x,pMyEnemy.x);
      wait(1);
   }
}


Damit die Box klickbar wird, fehlt noch folgendes in dieser FUNCTION.

Code:
void EnemyBox()
{
   ...
   my.emask |= (ENABLE_CLICK);
   my.event = EnemyBoxEvent;
   ...
}


EVENT-FUNCTION dazu:

Code:
void EnemyBoxEvent()
{
   switch(event_type)
   {
      case EVENT_CLICK:
      {
         ENTITY* ClickedEnemy = ptr_for_handle(my.skill1);
         MakeSomethingWithTheSelectedEnemy(ClickedEnemy);
         break;
      }
   }
}


So, im Ganzen dürfte das es schon gewesen sein.
Es wird jedesmal, wenn die Box angeklickt wird, das Handle aus der Box gelesen und in einen Pointer für den entsprechenden Feind konvertiert und anschließend in eine Funktion übergeben.
Diese Funktion dürfte dann die "normale" Funktion sein, die du für deine klickbaren-Gegner, ohne klickbare-Box, benutzen würdest.

Damit diese Box dann relativ unsichtbar wird, sollte noch das TRANSLUCENT Flag gesetzt werden.

Code:
   set(my,TRANSLUCENT);
   my.alpha = 0.1;


Re: mouse_click with box? [Re: CHaP] #261162
04/16/09 06:26
04/16/09 06:26
Joined: Jun 2008
Posts: 428
Rasch Offline OP
Senior Member
Rasch  Offline OP
Senior Member

Joined: Jun 2008
Posts: 428
Alles klar dann probier ich das ganze mal so danke


Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1