Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

1

20.05.2017, 00:05

2d: Dungeon Kollision JavaScript

für mein Browsergame Dragon Way ~

möchte ich player, NPCs und Items mit einer kreis Kollision ausstatten aber die Wände und alles unbewegliche sollte "Echte" Form haben.

Ich habe erst ausprobiert, allen Objecten eine echte Form zu geben, dazu habe ich eine Konturgrafik erstellt und die Pixel Position geprüft, ob da eine andere Kontur ist.
leider hat das nicht funktioniert, weil ich die Object namen nicht im Array erstellt habe, sondern alle Object den gleichen namen hatten.
Wie finde ich heraus was mit den anderen Object Daten passiert?

Meine Idee ist nun ein Bild von der Welt zu rändern in dem alle Konturen von unbeweglichen Objekten sind.
Player und NPCs könnte in der nähe liegende Kontur Pixel erkennen.

zusammengefasst:
kann man Pixel Farben ermitteln auch wenn ein anderes Object drüber gemalt ist? Dann könnte ich vielleicht prüfen, wenn 2 unterschiedliche Pixel übereinander sind.

für Andere Vorschläge bin ich auch offen

unten sind die Kontur Bilder, die sind transparent und schwarz ich dachte so könnte ich das abfragen der Farbwerte minimieren, aber ich prüfe trotztem jeden Pixel
»@zimmer« hat folgende Bilder angehängt:
  • ork64waitCollision.png
  • diamondCollision.png
  • ork64wait.png

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

20.05.2017, 01:02

Wie finde ich heraus was mit den anderen Object Daten passiert?

Verstehe ich nicht.

kann man Pixel Farben ermitteln auch wenn ein anderes Object drüber gemalt ist? Dann könnte ich vielleicht prüfen, wenn 2 unterschiedliche Pixel übereinander sind.

Nachdem du gemalt hast natürlich nicht mehr. Aber in dem Moment wo du ein Pixel setzt, kannst du doch schauen, ob es schon gesetzt ist.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

20.05.2017, 07:11

Ehrlich gesagt würde ich mit Pixel-Tests gar nicht erst anfangen. Das ist langsam und unnötig. Eine einfache Hitbox funktioniert genauso und ist vermutlich auch viel passender. Notfalls halt Polygone, wenn man unbedingt meint so viel Genauifkeit zu brauchen. Ich werfe auch mal Box2DJS in den Raum, um das Rad nicht neu zu erfinden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

4

20.05.2017, 09:31

Wie finde ich heraus was mit den anderen Object Daten passiert?

Verstehe ich nicht.

Ich male die Sprites mit hilfe von einer Variabele z.b. so

Quellcode

1
2
3
4
5
6
var drawvar= document.getElementById('canvas').getContext('2d');
var breite=64;

drawvar .drawImage (    sprite1,  x       , y       ;

drawvar .drawImage (    sprite1,  x+breite, y+breite;

es wir 2 mal sprite1 gemalt.
ich habe mich gefragt ob ich das erste drawImage irgendwo im speicher finden kann.
die variable drawvar wird überschrieben aber das erste Sprite ist auf dem Bildschirm zu sehen. und ich habe mich gefragt ob ich die Position irgendwie bekommen könnte.


@Box2DJS: Danke BlueCobold, ich werde das Runterladen, ich brauch auch tatsächlich Zeit für den Rest des Games, das soll ja bis zum 25. noch einige Spielmechaniken haben.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

20.05.2017, 09:33

ich habe mich gefragt ob ich das erste drawImage irgendwo im speicher finden kann.
die variable drawvar wird überschrieben aber das erste Sprite ist auf dem Bildschirm zu sehen. und ich habe mich gefragt ob ich die Position irgendwie bekommen könnte.
Nein und nein. Es werden da Pixel gezeichnet und keine Positionen gespeichert. Wenn du die Pixel überschreibst, sind sie überschrieben, es wird nicht jede Operation als separater Layer aufgehoben. Ist ohnehin langsam aus diesen Speichern zu lesen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

20.05.2017, 09:39

Wenn du wissen willst, wo du etwas gemalt hast, dann musst du dir das merken.

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

7

20.05.2017, 09:42

hm, es wird nicht mit der Power der Grafikkarte verarbeitet?
Nebenbei Gesagt könnte man die Position beim erstellen der Sprites in ein Array Speichern.
Was ist denn das für ein speicher?


Zitat von David

Zitat

Aber in dem Moment wo du ein Pixel setzt, kannst du doch schauen, ob es schon gesetzt ist.

Tja, stimmt, habe ich übersehen. Danke

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

20.05.2017, 09:57

hm, es wird nicht mit der Power der Grafikkarte verarbeitet?

Kommt darauf an, wie das im jeweiligen Browser implementiert ist. Aber egal - in dem Moment, wo du manuell auf die Pixel zugreifst, muss der Speicher zwischen CPU und GPU hin- und her kopiert werden, wodurch es langsam wird.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

20.05.2017, 12:50

Nebenbei Gesagt könnte man die Position beim erstellen der Sprites in ein Array Speichern.

Das ist doch nicht dein erstes Projekt. Erstell dir eine Klasse für deine Sprites. Da ist dann die Grafik, Position etc drin. Dann hast du an irgendeiner Stelle irgendeine Datenstruktur wo deine ganzen Objekte drin sind.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

10

20.05.2017, 14:32

Jo, das kriege ich hin. Super !
Datenstruktur muss ich erst googeln, weil:
ist die Datenstruktur eine function in der eine liste mit objectnamen ist die auf die definition vom objecten verweisen?
Datenstruktur ist bestimmt noch etwas mehr oder?

Werbeanzeige