Gebäude im Raster anordnen.
Übersicht

MatthiasBetreff: Gebäude im Raster anordnen. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo.
Wie der Titel schon sagt möchte ich gerne Gebäude(Cube) im Raster anordnen. Solange wie das Gebäude nicht gedreht wird klappt das auch. Das Problem beginnt erst wenn ich das Gebäude drehe. Und da suche ich nun eine Lösung bei dem das gedrehte Gebäude auch im Raster angeordnet wird. Ich hoffe auf eure Hilfe. ![]() Gebäude(Cube) drehen linke/rechte Pfeiltaste. Setzen linke Maustaste. Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 Timer=CreateTimer(60) CamPiv=CreatePivot(Camera):PositionEntity(CamPiv,0,500,0) Camera=CreateCamera(CamPiv):TurnEntity(Camera,45,0,0) Plane=CreatePlane():EntityColor(Plane,0,200,0) EntityPickMode Plane,2 Cube=CreateCube() ScaleEntity Cube,16,16,48 SetBuffer BackBuffer() Repeat CameraPick (Camera,MouseX(),MouseY()) X=PickedX() Z=PickedZ() X=Floor(X/32)*32 Z=Floor(Z/32)*32 PositionEntity Cube,X,0,Z If MouseHit(1)=1 Then Cube=CopyEntity(Cube) If MouseDown(2) Then TurnEntity(CamPiv,0,(MouseX()-MX)*.1,0) If KeyHit(203) Then TurnEntity(Cube,0,+22.5,0) If KeyHit(205) Then TurnEntity(Cube,0,-22.5,0) UpdateWorld() RenderWorld():MX=MouseX() Flip(0):WaitTimer(Timer) Until KeyDown(1)=1:End |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei mir funktioniert es genauso, wie es zu deiner Beschreibung sein sollte. Egal wie das Gebäude gedreht ist, es wird am Raster genau angeordnet. Starte sonst deinen Rechner einmal neu, denn ich hatte auch schon hier und da mal so komische Phänomene gehabt, die sich erst mit einem Neustart normalisierten. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vlt. Habe ich das jetzt doch falsch erklärt.
Zwischen den Cubes soll keine Lücke sein. |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann verkleiner deinen Raster. Ich hab hier kein BB rennen, kanns deswegen grad nicht ausprobieren. Aber mir scheint, deine Blöcke sind 16x16x48 groß, dein Raster ist aber 32x32 groß. Kann das sein? | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
SpionAtomBetreff: Skizzen! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine Skizze kann bei einer Problembeschreibung Wunder wirken. ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe da mal jetzt eine Skizze angefertigt.
So soll es dann aussehen. Die Gebäude(Cube) sollen immer bündig abschließen ohne das da zwischen ein Zwischenraum ist. ![]() |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst zu der Drehung die maximale Breite und Höhe bestimmen. Daraus kannst du dann die minimal benötigten Felder ermitteln.
Sinus und Cosinus hilft dir hier weiter. |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur wird die maximale Breite und Höhe in den meisten Fällen nicht exakt in dein Raster passen, von daher ist dein Wunsch unmöglich. Wenn ich den Wunsch richtig verstanden habe, dass jeder Eckpunkt des Gebäudes am Raster ausgerichtet sein soll.
mfG, Christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das die Cubes nicht genau in das Raster passen ist nicht so schlimm.
Es geht mir Hauptsächlich darum das die Front beim setzen bündich ist und zwischen den drei Cubes keine Lücke ist. Mit sin/cos habe ich schon ausprobiert. Bei 45° und einem Raster von 16x16 klappt es. Aber bei 22.5° geht es dann nicht mehr. |
||
![]() |
SpionAtomBetreff: Etwa so? |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie unten links? Oder doch ganz anders?
Und dann: Brauchst du das Raster nur dafür? Denn dann würde ich fast ganz drauf verzichten... ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du willst Gebäude in einem Raster anordnen und sie gleichzeitig gedreht haben? Das macht logisch keinen Sinn.
Hältst du das für eine absolute Notwendigkeit für dein Projekt, oder ist das nur eine Verkomplizierung, die dich von den essentiellen Teilen abhalten? |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit dem Raster ist schon sehr wichtig für mein Project.
Es soll ein Wirtschaftspiel werden und da soll mann dann immer mehr Fabrikhallen aneinander setzen könne. SpionAtom. Genau so wie untern links. So stell ich es mir vor. Danke an euch alle die alle geben um mein Problem zu lösen. Auch wenn mir die Worte fehlen um genau zu erklären wie ich es meine. ![]() |
||
![]() |
SpionAtomBetreff: Wir kommen der Sache näher |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann erkläre mir noch eines. Was ist die Beziehung von Rechteck und Raster?
Liegt da eine Ecke immer auf einem Rasterpunkt, oder zwei Ecken immer auf zwei Rasterlinien? Oder kann man alles freiwählen? Oder... ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die ecken müssen nicht auf einem Rasterpunkt liegen.
Wichtig ist mir nur das zwischen den Cubes keine Lücken sind und sie vorne bündisch abschließen. ![]() |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also definiert ein jedes Gebäude seinen eigenen (gedrehten) Raster sozusagen.
Würde ich so lösen: auf ein allgemeines raster verzichten und beim Anbauen schauen, an welches Gebäude gebaut wird. Dann von dem ausgehend wie schon vorgeschlagen mit sin und cos arbeiten. Mfg christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte mir überlegt, ob es zusammen mit einer gewählten Gebäudedimension einen guten gemeinsamen Teiler für ein grobes Raster gibt, der die Winkel 0°, 22.5°, 45° und 67.5° möglichst gut abdeckt. Bin dann auf eine Teilung von 13 gekommen. Diese wäre allerdings schon zu fein, so dass ich dann ein anderes Beispiel verfolgte. Jedes Gebäude setzt anhand seiner Position und Drehung jeweils (bei meinem Beispiel) zwei mögliche Punkte, wo andere Gebäude ansetzen können. Das ganze ist noch ausbaufähig. Zuerst wird anhand eines Rasters die mögliche Plazierung eingeschränkt (so wie bisher auch). Im zweiten Schritt werden dann die bereits gesetzten Gebäudeplatzierungen gesucht und anhand dieser gegebenenfalls erneut umpositioniert.
Änderung! Das Drehen der Gebäude nun mit dem Mausrad. Sonst alles gleich soweit. Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() Local Timer=CreateTimer(58) Local CamPiv=CreatePivot():PositionEntity(CamPiv,0,500,0) Local Camera=CreateCamera(CamPiv):TurnEntity(Camera,45,0,0) Local Plane=CreatePlane():EntityColor(Plane,0,200,0) EntityPickMode Plane,2 Local Light=CreateLight(1):TurnEntity Light,90,30,0 Local Cube=CreateCube():ScaleEntity Cube,16,16,48 Local MX%,X#,Y#,Z# Type TPos Field TX# Field TZ# End Type Local T.TPos Const RASTER=32 Const REACT=16 SetBuffer BackBuffer() Repeat CameraPick (Camera,MouseX(),MouseY()) X=Floor(PickedX()/RASTER)*RASTER Z=Floor(PickedZ()/RASTER)*RASTER ;Rasterung am Raster PositionEntity Cube,X,0,Z ;Rasterung am Objekt For T.TPos=Each TPos If X>T\TX-REACT And X<T\TX+REACT And Z>T\TZ-REACT And Z<T\TZ+REACT Then PositionEntity Cube,T\TX,0,T\TZ X=T\TX Z=T\TZ End If Next ;neue Position setzen If MouseHit(1)=1 Then ;Rechts T.TPos=New TPos T\TX=X+Cos(EntityYaw(Cube))*RASTER T\TZ=Z+Sin(EntityYaw(Cube))*RASTER ;Links T.TPos=New TPos T\TX=X-Cos(EntityYaw(Cube))*RASTER T\TZ=Z-Sin(EntityYaw(Cube))*RASTER Cube=CopyEntity(Cube) End If If MouseDown(2) Then TurnEntity(CamPiv,0,(MouseX()-MX)*.1,0) ;mit Mausrad drehen TurnEntity(Cube,0,MouseZSpeed()*22.5,0) ;und dann begradigen RotateEntity Cube,0,Int(EntityYaw(Cube)/22.5)*22.5,0 UpdateWorld() RenderWorld():MX=MouseX() Flip(0):WaitTimer(Timer) Until KeyDown(1)=1:End Nur mal so als Idee. Hatte heute etwas Zeit und Lust. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, du machst es dir damit schwerer, als es nötig ist. Wenn die Gebäude nichts mit dem Raster im Hintergrund zu tun haben (also keine Tilemap benutzt wird), kannst du viele Dinge nicht einfach machen:
- Das Tile (Gebäude) bestimmen, über dem der Mauspointer ist. - Welche Gebäude im Sichtbaren Bereich sind. - Wo Platz ist, um ein neues Gebäude zu platzieren. Ich sehe da auch nicht, wie es dem Spieler etwas bringt, Gebäude beliebig drehen zu können. In einem Raster sieht man ganz genau, was aneinander passt - ggf. kann man voraus planen. Oder ist es Teil des Spielprinzips, dass man sehr wenig Platz zur Verfügung hat, und die Gebäude wie bei einem Puzzel zusammenfügen muss? |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich persönlich mag Rasterung, damit man weiter weg entfernte Sachen ohne Probleme, schnell und genau positionieren kann. Eine Rasterung dahingehend, dass eine Tilemap erstellt wird, mag ich wiederum nicht. Deshalb finde ich, sofern die Umsetzung richtig verstanden habe, den von Matthias angedachten Ansatz super.
Ich würde mir beispielsweise ein Vektorprogramm wünschen, in dem man eine Rasterung einrichten kann. Beispielsweise bei Inkscape. Dann könnte man damit viele Schöne Sachen machen, zum Beispiel 'so mal eben' ein neuen Font kreieren, aber nein, man muss nach jedem Punkt oben manuell die Zahl X und Y separat per Hand auf- oder abrunden. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Offtopic: Man kann in Inkscape ein Raster einstellen. Nennt sich Gitter und wird in den Dokumenteneinstellungen (Umschalt+Strg+D) definiert. Damit deine Punkte dann auch daran kleben bleiben, musst du in der Symbolleiste rechts "Einrasten Aktivieren" (zuoberst), "Knoten, Pfade und Anfasser einrasten" (7. Schaltfläche von oben) aktivieren und zu guter Letzt noch "Am Gitter einrasten" (zweitunterste Schaltfläche) | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich werde es so machen wie Eingeproggt geschrieben hat.
Hatte eigentlich gedacht das es eine elegantere Lösung gibt. Aber scheint dann doch nicht so einfach zu sein. ![]() An alle Danke die sich mein Problem angenommen haben und ihr bestes gegeben haben. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group