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

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

21

08.09.2009, 18:10

ich glaub ich kann beides ausschließen....liegts vllt. daran dass ich m_pGame static gemacht hab?
New Project: Operation CityRacer

22

08.09.2009, 19:49

Wie du hast es static gemacht?

Wenn dem so wäre müsstest du anderst daraus zugreifen

C-/C++-Quelltext

1
2
3
4
5
Klassenname::Attributname;

// bzw.


Klassenname::Methodenname();


anstelle von

C-/C++-Quelltext

1
2
3
4
5
Objekt->Attributname;

// bzw.


Objekt->Methodenname();

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

23

08.09.2009, 21:55

so :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class CAsteroid : public tbObject
{
public:
    tbResult MoveAsteroid(float fTime, tbVector3 vCameraPos);
    tbResult RenderAsteroid(float fTime);
    bool IsVisible();

    bool            m_bCanDock;
    int             m_iIndex;
    SAsteroidType*  m_pType;
    bool            m_bExists;
    static Game*    m_pGame;
};
Game* CAsteroid::m_pGame;

dann hab ich halt ganz normal CAsteroid::m_pGame = &meinGameInstanz zugewiesen
New Project: Operation CityRacer

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

24

11.09.2009, 17:27

nachdem ich mehrere Tage jetzt schon wieder daran rumgemacht habe, hab ich herausgefunden, dass es an der Game Instanz nich liegt, und hab mal das problem beiseite gelegt....
nun hab ich wieder ein Problem und zwar prüfe ich mein Schuss und die asteroiden auf Kollision, aber wenn ich schieße kommt kein Schuss aus dem Raumschif raus und ein asteroid verschwindet in dem moment. Aber es verschwindet nich ein Asteroid in der Schussbahn sondern irgendwo...

hier mal Code:

C-/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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
tbResult Projectile::MoveProjectile(float fTime)
{

    Game*       pGame = g_pClasteroid->m_pGame;
    tbVector3   vOldPos;
    tbVector3   vCollisionEnd;
    tbVector3   vCollision;
    CAsteroid*      pAsteroid;
    SAsteroidType*  pAsteroidType;

    vOldPos = m_vPosition;
    Move(fTime);
    m_fLifetime -= fTime;

    for(int s = 0; s < 400; s++)
    {

        pAsteroid = &pGame->m_aAsteroid[s];
        pAsteroidType = pAsteroid->m_pType;

        if(!pAsteroid->m_bExists) continue;

        vCollisionEnd = m_vPosition;
        if(m_pType->bIsLaserWeapon) vCollisionEnd += m_vZAxis * m_pType->fLaserLength;

        // Trifft die Linie das Schiff?

        if(tbLineHitsModel(vOldPos, vCollisionEnd,
                           pAsteroid->m_pType->pModel[0],
                           pAsteroid->m_mMatrix,
                           pAsteroid->m_mInvMatrix,
                           0,
                           &vCollision))
        {
            m_fLifetime = 0.0f;
            pAsteroid->m_bExists = false;
            break;
        }

    }
    return TB_OK;
}
tbResult Projectile::RenderProjectile(float fTime)
{
    if(m_pType->bIsLaserWeapon)
    {
        if(m_pType->bRenderAsSprite)
        {
            g_pClasteroid->m_pGame->m_pSprites->AddSprite(m_pType->iLaserSprite,
                                                         m_vPosition,
                                                         m_pType->LaserStartColor,
                                                         tbVector2(m_pType->fLaserRadius),
                                                         m_fLifetime * -2.0f);

        }
        else
        {
            // Laser-Sprite

            g_pClasteroid->m_pGame->m_pSprites->AddLaserSprite(m_pType->iLaserSprite,
                                                              m_vPosition,
                                                              m_vPosition + (m_vZAxis * m_pType->fLaserLength),
                                                              m_pType->fLaserRadius,
                                                              m_pType->LaserStartColor,
                                                              m_pType->LaserEndColor);

        }
    }
    return TB_OK;
}


ich hab echt keine Ahnung an was es liegt und bin grad richitg am verzweifeln... :(
sagt wenn mehr code erwünscht is oder welchen...



Edit: achja, also ich hab auch noch verschiedene Modelle ausprobiert sogar die vom Galactica Spiel...und es kommt immer wenn er auf kollision prüft ein tbError : "FEHLER: Das Modell hat keine Extradaten!", aber die Modelle werden richtig angezeigt
Und es gibt dann eine Funktion namens "UpdateExtraData", die mir diese extra daten erstellt aber es funktioniert trotzdem nicht und der fehler kommt immer noch....
New Project: Operation CityRacer

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

25

12.09.2009, 18:44

keiner ne Idee an was es liegen könnte?? :(
New Project: Operation CityRacer

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

26

13.09.2009, 20:45

sorry für tripple post: Edit: quaddro post: :lol:

also hab das problem dass der laser nicht angezeigt wird gelöst weil ich habe bei meinem tbModel->Init falsche parameter angegeben
nun jetzt wird das modell vom Galactica Spiel angezeigt, der Laser auch und die Kollision geht....aber wenn ich es mit meinem eigens erstellten Modell versuche kommt wieder der Fehler von oben : "FEHLER: Das Modell hat keine Extradaten!" muss ich beim erstellen des modells irgendetwas beachten oder einstellen??
New Project: Operation CityRacer

27

20.09.2009, 06:30

Es geht doch darum das die Spawnpoints nicht genau vor der Schnauze von irgendeinem der beiden Player entstehen.
Schon mal an Pythagoras gedacht ? Die Entfernung zweier Punkte lässt sich errechnen ! Auch räumlich: Wurzel aus ( a_quadrat + b_quadrat + c_quadrat )

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

28

21.09.2009, 14:25

Quellcode

1
if(m_pType->bIsLaserWeapon) vCollisionEnd += m_vZAxis * m_pType->fLaserLength;


was genau ist m_vZAxis? du solltest es wohl durch den richtungsvektor von deinem raumschiff ersetzen.
"Don't trust your eyes: They are a hell of a lot smarter than you are"

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

29

21.09.2009, 14:38

so wie du es gesagt hast : der richtungsvektor


dass der laser nicht angezeigt wurde hab ich behoben....da ich ja falsche parameter angegeben habe....
jetzt hab ich nur noch 2 probleme:

1. view frustum wird irgendwie nich richtig asugerechnet und angezeigt
2. das modell vom galactica spiel funktioniert aber mein modell das ich selbst erstellt hab funktioniert nich...also die kollisionserkennung, und da kommt halt wieder der fehler mit den Extra Daten
New Project: Operation CityRacer

30

22.09.2009, 00:15

Ein kleiner Tip: :lol:
View und Projection Matrices einfach selbst in Schleifen legen und ein wenig herumexperimentieren und austarieren. Nimm dir die Zeit und schreib dir das auf, das hilft dann beim Debugging der Werte.

Werbeanzeige