steuerung wie in Homeworld

Posted By: Spottie

steuerung wie in Homeworld - 10/22/07 16:09

Kann mir jemand einen Tip geben, wie ich eine Steuerung wie bei Homeword hin bekomme? Ich weiß nicht, wie ich die Mauskoordinaten am besten in 3d-Koordinaten umwandel. bei einem Stategiespiel wie CnC is das ja nciht so das Problem, da man das dann wie im CnC-Tut machen kann. Aber wie ich das im Weltraum machen soll ist nicht so einfach.
Posted By: flits

Re: steuerung wie in Homeworld - 10/22/07 17:11

i am not sure if u mean this but maby it is

function clicked
{
if(event_click == on)
{
selected_my = on;
}
}

action klickableentity
{
my.enable_click = on;
my.event = clicked;

// ore
use mouse_ent

if this isnt what u was searching for i didnt understand u
Posted By: RedPhoenix

Re: steuerung wie in Homeworld - 10/22/07 17:38

Hmm machbar aber nicht so einfach.
Ich denke was du möchtest (schon ne weile her, dass ich homeworld gespielt habe) ist etwa, dass du auf einen Punkt im Raum klickst und deine Schiffe dahin fliegen, ohne ihr Höhenlevel zu verlassen. Um die Höhenlevel der Schiffe zu ändern gabs glaub ich einen extra movemode der über Shift aktivierbar war in Homeworld.
Ich weiß jetzt nicht ob du A7 hast (vlt. gibts das auch schon in A6 bin mir aber nicht sicher), ich würde mouse_dir3d als Anfang nehmen. Der vector zeigt in Richtung der Mausposition aus dem View heraus und hat soweit ich weiß Länge 1. Diesen müsstest du verlängern und zwar so, dass die z Koordinate des Vektors der Differenz zwischen dem Höhenwert der Camera und dem angewählten Schiff liegt. Also: (Annahme you sei der Pointer auf die selektierte Einheit)

Code:

vec_set (temp_vec,mouse_dir3d);
vec_scale(temp_vec,(camera.z - you.z)*(1/mouse_dir3d.z));



Dann hast du den Punkt des Mauszeigers an der bestimmten Höhe. Den Shift mode bekommst du nun noch hin indem bei angewählter Shift Taste ein z-Verzug addiert wird, der anhand der Mausbewegung (mickey.x) vergrößert wird.
Posted By: Spottie

Re: steuerung wie in Homeworld - 10/23/07 12:43

danke, werd ich in der nächsten zeit mal ausprobieren, ob ich das hin bekomme
Posted By: the_mark

Re: steuerung wie in Homeworld - 01/13/09 20:54

Ich weiß, dies ist ein uuuralter Thread, aber ich hole ihn mal hoch, weil ich derzeit mich mit dem gleichen Problem beschäftigte.

Der og. Code funtkioniert leider so nicht, er liefert teilweise obskure Werte.
Ich bin jetzt nicht so sehr das Mathe-Genie, dass ich selber drauf komme, aber die Wahrheit ist irgendwo da draußen (ach, das hatte schon mal jemand gesagt, oder)

Jemand eine Idee dazu?
Posted By: the_mark

Re: steuerung wie in Homeworld - 01/18/09 14:37

So... ich habe das Problem jetzt wie folgt gelöst (wobei ich mir nicht sicher bin, ob es der eleganteste Weg ist):

Ein transparentes Terrain, PASSABLE sitzt auf der "0"-Ebene des Schiffes.
Dann, zum setzen des Ziels:

temp[0] = mouse_pos.x;
temp[1] = mouse_pos.y;
temp[2] = 10000;
vec_for_screen(temp,camera);
c_trace(camera.x,temp, IGNORE_MODELS | IGNORE_SPRITES);
vec_set (c_pos,target);
ent_create("sprites\\point.tga", c_pos, moving_cursor);

etc. etc..... in der Funktion "moving_cursor" wird eben permanent dieser Trace durchgeführt.

Funktioniert einwandfrei.

Andere Ideen herzlich willkommen.
© 2023 lite-C Forums