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

1

22.02.2012, 14:01

[c#] Normale finden? / Objekt soll abprallen

hi, ich versuche, einen ball an einem anderen objekt abprallen zu lassen, aber alles was ich erreiche ist dass er dahin zurück fliegt, wo er herkommt... wie kriege ich denn die normale raus??

mein code:

C#-Quelltext

1
2
3
            Vector2 normal = direction;
                    normal.Normalize();
                    direction = Vector2.Reflect(direction, normal);

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

22.02.2012, 14:12

Um was für ein Objekt handelt es sich denn? Im Allgemeinen sollte eher die Oberflächennormale des Objekts verwendet werden um die Bewegung zu ändern und nicht die Bewegungsrichtung des Balls.
@D13_Dreinig

3

22.02.2012, 14:22

weiß ich ja, aber wie finde ich die raus? ich habe lediglich die position des balls und den bewegungsvektor.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

22.02.2012, 14:23

weiß ich ja, aber wie finde ich die raus? ich habe lediglich die position des balls und den bewegungsvektor.


Dann findest du sie gar nicht raus. Du brauchst natürlich mehr Informationen, z.B. das getroffene Modell, den Impactpoint usw...
@D13_Dreinig

5

22.02.2012, 14:26

weiß ich ja, aber wie finde ich die raus? ich habe lediglich die position des balls und den bewegungsvektor.


Dann findest du sie gar nicht raus. Du brauchst natürlich mehr Informationen, z.B. das getroffene Modell, den Impactpoint usw...
den punkt, den ich treffe, habe ich im grunde auch.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

22.02.2012, 14:33

Und wie berechnest du den?

7

22.02.2012, 14:38

Und wie berechnest du den?

im moment habe ich nur die seitenränder des spielfelds, d.h. es würde auch einfacher gehen mit dem abprallen, aber ich würde gerne eine allgemeine funktion für alle punkte haben, die später evtl kommen.

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public void moveBall()
        {

            position += direction * speed;

            if (position.X + texture.Width > resolution.X())
            {
                //als beispiel, weil der vektor die rechte wand trifft
                ballReflect();
            }

  

        }

        private void ballReflect()
        {


            Vector2 normal = direction;
            normal.Normalize();

            direction = Vector2.Reflect(direction, normal);
        }


ich weiß, wie schlecht der code ist :) der punkt, den ich noch brauche, ist noch nicht drin, aber er wäre in diesem Fall bei position.X + texture.Width, glaube ich.

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

8

22.02.2012, 14:38

Was genau ist denn das andere Objekt für eine Figur? Rechteck, Kreis, Dreieck, Viereck, Polygon?

9

22.02.2012, 14:40

Was genau ist denn das andere Objekt für eine Figur? Rechteck, Kreis, Dreieck, Viereck, Polygon?
im moment kein objekt, sondern einfach der spielfeldrand, aber ich möchte das später universell haben für rechtecke.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

22.02.2012, 14:48

Na du kennst doch wohl die Normalen von deinem Rand!?

Werbeanzeige