CamerPick auf Terrain
Übersicht

HoneschBetreff: CamerPick auf Terrain |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey
Ich möchte meinen Spieler zu dem Punkt bewegen, auf den ich im Terrain klicke...wenn ihr versteht was ich meine. Ich sehe meinen Spieler in der 3rd-person Pespektive. Auf den Punkt soll er dann "hingehen". Es muss auf jeden Fall mit Camerpick funktionieren, denke ich mal. Aber wie genau ?! Der Rückgabewert ist doch nur das handle... und das terrain ist eine größe Fläche, nicht nur ein würfel oder eine Kugel. Und er soll sich genau auf den Punkt auf der großen Fläche hinbewegen. Ich würde mich freuen, wenn ihr mir helfen könnt ![]() mfg Honesch aus Wien ![]() |
||
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik ! |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie wäre es mit
https://www.blitzforum.de/help/PickedX https://www.blitzforum.de/help/PickedY https://www.blitzforum.de/help/PickedZ ? |
||
-~= real coders just code in binary =~- |
Honesch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja..dann hab ich die absoluten Koordinaten im Raum...aber wie kann ich den Player dann dorthin bewegen ?? ![]() |
||
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik ! |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In dem du ihn auf die Punkte ausrichtest (siehe Hilfe für Befehle wie Turnentity, DeltaYaw) und dann mit z. B. MoveEntity bewegst. | ||
-~= real coders just code in binary =~- |
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich persönlich würde jetzt einen Pivot dort plazieren wo er hingehn soll (das empfielt sich besonders wenn du z.B noch einen blinkenden Pfeil als anzeige für den gewählten Punkt machen möchtest)
ist ausserdem konfortabler den spieler nach einer entity auszurichten anstatt mit den absoluten koordinaten zu hantieren |
||
HoneschBetreff: danke :) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke für die guten antworten...werde es mal ausprobieren ![]() mfg Honesch aus Wien ![]() |
||
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik ! |
HoneschBetreff: -.- |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe schon fast alles ausprobiert...funktioniert aber nicht richtig....er soll den pivot entfernen, wenn der player in der unmittelbaren nähe des pivots ist. Das funktioniert nicht ... wenn ichs per "If keyhit(..) then del_piv(movepivot)" mache, gehts ![]() If ( ( Abs(xPicked-EntityX(player)) <= 30 ) And (Abs(yPicked-EntityY(player)) <= 30 ) ) Then del_piv(movepivot) xPicked bekomme ich mit einer funktion...sie liefert die absoluten Raumkoordinaten der Maus..also bei mir xPicked, yPicked, zPicked...Wenn ich einen Pivot setzte (per Mausklick) dann wird dieser an der derzeitigen xPicked,0,zPicked positioniert....Dann dreht sich der Player dorthin (Pointentity ; nicht deltayaw etc.) und bewegt sich solange vorwärts, bis die oben genannte Bedingung eintritt, dann sollte der Pivot sich entfernen. Das hört sich vielleicht komplizierter an, als es ist. Ich gebe euch einmal den Code: Code: [AUSKLAPPEN] ;Hauptschleife While Not KeyHit(1) move_camera() get_picked_mesh() If MouseDown(1) Then set_move_piv() If movepiv_set=1 Then move_player_to_piv() If ( ( Abs(xPicked-EntityX(player)) <= 30 ) And (Abs(yPicked-EntityY(player)) <= 30 ) ) Then del_piv(movepivot) If KeyHit(2) Then del_piv(movepivot) Collisions typ_player,typ_map,2,1 UpdateWorld RenderWorld draw_mouse() show_vars() Flip 0 Wend ;Functions Global picked_mesh,xPicked,yPicked,zPicked Function get_picked_mesh() picked_mesh=CameraPick(camera,MouseX(),MouseY()) xPicked=PickedX() yPicked=PickedY() zPicked=PickedZ() Return picked_mesh Return xPicked Return yPicked Return zPicked End Function ;===================================================================== Global movepivot Global movepiv_set=0 Global piv_player_dist Function set_move_piv() If movepivot=1 FreeEntity movepivot Else movepivot=CreatePivot() PositionEntity movepivot,xPicked,0,zPicked piv_player_dist=EntityDistance(player,movepivot) movepiv_set=1 EndIf Return movepivot End Function ;===================================================================== Global pointed=0 Global player_walkspeed = 3 Function move_player_to_piv() If pointed = 0 PointEntity player,movepivot pointed = 1 EndIf playerpitch=EntityPitch(player) playeryaw=EntityYaw(player) playerroll=EntityRoll(player) RotateEntity player,0,playeryaw,playerroll piv_player_dist=EntityDistance(player,movepivot) MoveEntity player,0,0,player_walkspeed Return piv_player_dist End Function ;===================================================================== Function del_piv(piv) FreeEntity piv movepiv_set=0 pointed=0 Return movepiv_set End Function Was ich auch nicht verstehe ist, wenn ich mit der Maus in die Nähe der absoluten x-Position des derzeitigen Stands des Players komme, auch die Funktion del_movepivot aufgerufen wird...da wird die ganz oben genannte Bedingung ja nicht erfüllt.. ![]() ![]() ![]() ![]() ![]() mfg Honesch [/code] EDIT: Habe es gelöst.. 1. Hatte ich die Bedingung falsch (hatte y statt z ![]() 2. Hatte ich nur die derzeitigen xPicked und zPicked drinnen..und nicht die tatsächliche position des pivots position mfg Honesch aus Wien ![]() |
||
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik ! |
- Zuletzt bearbeitet von Honesch am So, Sep 21, 2008 12:26, insgesamt einmal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würd ja eh EntityDistance![]() Btw rück deinen code mit Tabulatoren ein, ist fast nicht zu lesen. Eingerückte Codes sind viel besser zu lesen. Code: [AUSKLAPPEN] While IchRueckeEin = True Print "Super!" Wend Code: [AUSKLAPPEN] If KeyHit(1337) Then Print "Du bist so 1337, du hast sogar ne 1337ner Taste auf deiner Tastatur! :o" EndIf Das ganze auch in For...Next Schleifen, Repeat schleifen etc. HF |
||
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie wäre es mit einer "richtigen" Abstands-Funktion? Entweder nimmst du die von Blitz (EntityDistance) oder nimmst sowas hier, wobei die nur die X- und Z-Achsen berücksichtigt.
Code: [AUSKLAPPEN] Function Distance#(start,aim)
DisX#=(EntityX(aim)-EntityX(Start,1)) DisZ#=(EntityZ(aim)-EntityZ(Start,1)) Dist#=Sqr(DisX#^2+DisZ#^2) Return Dist# End Function Dann noch zu deiner Funktion get_picked_mesh(). Es geht nur ein Return, weil sobald das erste Return abgeschlossen wurde, die Funktion verlassen wird, meines Wissens. |
||
-~= real coders just code in binary =~- |
Honesch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ BadDeath
Habe jetzt eine richtige Abstandsfunktion...und wegen der get_picked_mesh() funktion..dachte auch dass nur ein return geht...aber ich kann alle Werte (x,-y,-z-Picked) extern anzeigen lassen...also müssen alle zurückgegeben sein denke ich mal.. ![]() @The_Nici Habe das Problem jetzt doch gelöst..und normalerweise verwende ich überall Tabulatoren ![]() ![]() mfg Honesch aus Wien ![]() |
||
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik ! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group