[B3d]Texturen Anpicken? (Gelöst)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Splitfatal

Betreff: [B3d]Texturen Anpicken? (Gelöst)

BeitragFr, Dez 08, 2006 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich habe ja erst vor kurzem mit Blitz3d angefangen und mache nun ein einfaches Spiel. Nun hänge ich aber an einer Stelle fest. Als erste mal ne kleine Erklärung:

In dem Spiel handelt es sich um ein Brettspielt und man schaut von oben auf das Brett. Mit der Linken Maustaste setzt man Schwarze Steine und mit der Rechten Setzt man Weiße (da ich nicht genau weiss wie ich das machen kann das man die abwechselnt setzen kann. Aber damit beschäftige ich mich später)

So in dem Spiel kann man aber auch steine wieder entfernen. Dies macht man dann mit der 3ten Maustaste.

so mal ein auschnitt aus dem Code:
Zitat:

;;,Hauptschleife;;;;

Nx%=PickedX()
Nz%=PickedZ()

picken=CameraPick (camera, mx,my)
ObId=PickedEntity ()

If picken<>0 Then
surf=PickedSurface()
End If

If surf=12447816 And MouseHit (1) Then SS (NX,Nz)
If surf=12447816 And MouseHit (2) Then WS (Nx,Nz)
If surf<>12447816 And MouseHit(3) Then loeschen(ObID)

;;;;12447816 steht hier für das Spiele Brett damit man auch nur klickt wenn man auf dem Brett ist.;;;;

;So nun noch die Funktionen;

Function WS (x,z)

steinw=LoadMesh ("modelle/golow.B3D")
PositionEntity gosteinw, X, 0, z
EntityTexture steinw, steinwtex
EntityPickMode steinw, 2

End Function

Function SS (x,z)

steins=LoadMesh ("modelle/golow.B3D")
PositionEntity gosteinw, X, 0, z
EntityTexture steins, steinstex
EntityPickMode steins, 2

End Function

Function loeschen (id)


MoveEntity id, 100000,0,0 ;;; zum test einfach nur weg schieben;;;

End Function


So ist sehr viel gekürzt ^^ Eigentlich machen die Steine noch eine bestimmte Bewegung bevor sie an ihre Endstelle platz nehmen ^^

So mein Problem ist: Ich bekomme nun zwar die richtigen Steine weg. Aber in dem Spiel ist ein Stein der entfernt wird gleichzeitig ein Punkt für den Gegner. Nun habe ich keine möglichkeit zu testen ob es ein Schwarzer Stein war der gelöscht wurde (wäre ein Punkt für Weiß) oder eben ein Weißer. Darum dachte ich das es vielleicht eine Funktion gibt um den Texturnamen mit zu Picken. Weil dann liese es sich mit ner weiteren IF schleife in der loeschen Funktion regeln. ^^

Also Frage: Kann man die Textur Id/Name irgendwie abfragen/picken?

Hoffe das mir geholfen werden kann. (Ich glaube mit Types wäre das kein Problem nur leider habe ich das nun noch nicht verstanden wie das geht. Weil mir irgendwie der ganze Denkanstoss dafür fehlt. Habe zwar schon haufen Tuts darüber gelesen aber noch nie wirklich was Praktisches damit gemacht ....

Nun ja ich danke jetzt schon für die Antwort Smile

PS.: Wenn man das nicht Picken kann gibt es vielleicht noch eine andere Variante?
  • Zuletzt bearbeitet von Splitfatal am Sa, Dez 09, 2006 6:38, insgesamt einmal bearbeitet

Bob

BeitragFr, Dez 08, 2006 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, du kannst es ganz einfach machen.
Mit entityName (oder war es nameEntity, B3D lang ist's her ) kannst du einem Stein einen namen zuweisen.
Also z.b. s oder w. dan hast du deine Farbe.
 

Splitfatal

BeitragFr, Dez 08, 2006 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
EDIT: Ach mhhhh die sache ist leider doch nicht so einfach. Weil wie kann ich den namen des Steines ermitteln? Wenn ich schreibe:

Zitat:


If EntityName$(steinw)=W Then MoveEntity id, 10000,0,0 : Wpunkte=Wpunkte+1 Else MoveEntity id, 10000,0,0 : Spunkte=Spunkte+1


Frage ich ja nur ob steinw auch W heist (abgesehen davon wird das Entity garnicht gefunden da es ja in einer Function Produziert wurde und somit nicht Global ist (oder?)

Nun nochmal mein code in veränderter Form die so nicht hinhaut ^^

Zitat:




;;,Hauptschleife;;;;

Wpunkte=0
Spunkte=0

Nx%=PickedX()
Nz%=PickedZ()

picken=CameraPick (camera, mx,my)
ObId=PickedEntity ()

If picken<>0 Then
surf=PickedSurface()
End If

If surf=12447816 And MouseHit (1) Then SS (NX,Nz)
If surf=12447816 And MouseHit (2) Then WS (Nx,Nz)
If surf<>12447816 And MouseHit(3) Then loeschen(ObID)

;;;;12447816 steht hier für das Spiele Brett damit man auch nur klickt wenn man auf dem Brett ist.;;;;

;So nun noch die Funktionen;

Function WS (x,z)

steinw=LoadMesh ("modelle/golow.B3D")
NameEntity gosteinw, "w"
PositionEntity gosteinw, X, 0, z
EntityTexture steinw, steinwtex
EntityPickMode steinw, 2

End Function

Function SS (x,z)

steins=LoadMesh ("modelle/golow.B3D")
NameEntity gosteins, "S"
PositionEntity gosteinw, X, 0, z
EntityTexture steins, steinstex
EntityPickMode steins, 2

End Function

Function loeschen (id)

If EntityName$(steinw)=W Then MoveEntity id, 10000,0,0 : Wpunkte=Wpunkte+1 Else MoveEntity id, 10000,0,0 : Spunkte=Spunkte+1

End Function


Gibt es einen weg um zu fragen welchen namen das zuletzt angewählte Objekt hatte?

Bzw kann man in einer Funktion überhaupt einen Entity namen festlegen und sie in einer anderen wieder abfragen? (Wegen Local und Global)

Ja das wars.

Original Text:

Ahhh danke genau so ein Denkanstoß hat mir gefehlt Wink
 

Splitfatal

BeitragSa, Dez 09, 2006 6:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry wegen Doppelpost. Aber ich habs nun endlich gelöst. Habe es nun ganz anders gemacht. Ich habe einfach die Funktion eingebaut das man sieht wer dran ist (mit ner einfachen variabel) und dann kam mir die idee das einfach gleich in die If abfrage zu nehmen wer gerade dran ist beim löschen eines steines.

Komisch geschrieben ^^ is aber auch schon spät (bzw früh)

Ja nun noch nen paar Kleinigkeiten und mein erstes Spiel ist fertig Smile

Bob

BeitragSa, Dez 09, 2006 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Namen läuft in etwa so.

picken=CameraPick (camera, mx,my)
ObId=PickedEntity ()
If EntityName(ObId) = "W" then... 'das wird wohl weiss sein!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group