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

Stefan

Alter Hase

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

11

29.05.2004, 23:42

Zitat von »"Sk!p"«

ja x aber das funzt irgendwie net O_o

also wenn du tbVector verwendest muss es gehen! Oder verwendest du einmal tbVector2 und einmal tbVector3 und übergibst den tbVector2 den tbVector3? Zeig mal den Codeausschnitt, wo du die Veriablen deaklarierst!


cya,
Stefan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

12

30.05.2004, 00:02

Tralala also die Movefunktion vom Schläger sieht ja so aus:

Quellcode

1
2
3
m_vPaddleVel.x += g_pfBuffer[TB_KEY_RIGHT] *50.0f *[b]fTime[/b];
m_vPaddleVel.x -= g_pfBuffer[TB_KEY_LEFT] *50.0f *[b]fTime[/b];
[b]m_vPaddlePos +=m_vPaddleVel * fTime;[/b]

sieht es bei dir auch so aus?

P.S: Warum ist der Faktor Zeit 2mal drin???

13

30.05.2004, 08:53

den codeabschnitt hab ich jetz grad net da aber ich glaube schon dass beide tbVector3 sind und selbst wenn nicht müsste es doch möglich sein den x-wert eines tbVector2s einem tbVector3 zuzuweisen ???

PS: was meinst du mit ist die zeit zweimal drin O_o

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

14

30.05.2004, 11:56

Naja, das x wird einmal so berechnet:
m_vPaddleVel.x += g_pfBuffer[TB_KEY_RIGHT] *50.0f *fTime;
und dann wird der gesamte Vektor nochmal mit fTime multipliziert, also ist x= x+g_pfBuffer[TB_KEY_RIGHT] *50.0f * fTime * fTime;

P.S: Wie sieht denn dein Code-Abschnutt aus? Hast du vielleicht die letzte Zeile vergessen, wo das ganze zum Pos_vektor umgerechnet wird?

15

30.05.2004, 13:13

aso jetz versteh ich was du meinst.

die velocity anweisung berechnet wie gesagt die Flugrichtung der kugel in abhängigkeit von den buttons. also ja länger(Zeit) du den button drückst desto mehr wird die Kugel abgelenkt

die zweite g_fTime berechnet die Position , die das heißt Pos * Vel * Zeit denn die Kugelposition soll ja pro frame um Velocity * der vergangenen Zeit vortbewegt werden sonst würde die Kugel einfach auf der stelle hängenbleiben glaub ich O_o

und ich poste euch bei nächster gelegenheit einfach mal den ganzen codeabschnitt!

16

04.06.2004, 17:11

Quellcode

1
2
3
4
5
6
7
8
if(m_aExtra[0].m_bActive == TRUE && m_fExtraTime >= 0)
    {
        m_pExtra->ExtraRelease(0);
        sprintf(m_cExtraText, "Speed Pad");
        m_vPaddleVel.x += g_pfButtons[TB_KEY_RIGHT] * 100.0f * fTime;
        m_vPaddleVel.x -= g_pfButtons[TB_KEY_LEFT] * 100.0f * fTime;
        m_fExtraTime -= fTime;
    }


die zeitvariable wurde in der Extrafunktion gesetzt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int CGame::CreateExtra(tbVector3 vPosition,
                       tbVector3 vVelocity)
                      
{
    int iExtra = tbIntRandom(0, 14);
    

    m_aExtra[iExtra].m_bExists = TRUE;
    m_aExtra[iExtra].m_pGame = this;
    m_aExtra[iExtra].m_vPosition = vPosition;
    m_aExtra[iExtra].m_vVelocity = vVelocity;

    return iExtra;

    m_fExtraTime = 10.0f;
    
}


2) Auto-Ball (Kommentarzeile verursacht Fehler)

Quellcode

1
2
3
4
5
6
7
if(m_aExtra[3].m_bActive == TRUE && m_fExtraTime >= 0)
        {
            m_pExtra->ExtraRelease(3);
            sprintf(m_cExtraText, "Auto Ball");
            // m_vPaddlePos.x = m_pBall->m_vPosition.x;
            m_fExtraTime -= fTime;
        }



3) Magic-Ball: hierbei tut sich beim Ball nix wenn man Pfeiltasten drückt

Quellcode

1
2
3
4
5
6
7
8
if(m_aExtra[4].m_bActive == TRUE && m_fExtraTime >= 0)
            {
                m_pExtra->ExtraRelease(4);
                sprintf(m_cExtraText, "Magic Ball");
                m_aBall[0].m_vVelocity.x += g_pfButtons[TB_KEY_RIGHT] * 25.0f * fTime;
                m_aBall[0].m_vVelocity.x -= g_pfButtons[TB_KEY_LEFT] * 25.0f * fTime;
                m_fExtraTime -= fTime;
            }


4) und die ExtraRelease die alle anderen Extras deaktivieren soll wenn man ein anderes aufsammelt funzt auch net:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tbResult CExtra::ExtraRelease(int iExtraNum)
{
    /*int iExtra;
    
    for(iExtra = 0; iExtra < 15; iExtra++)
    {
        while(iExtra != iExtraNum)
        {
            //m_pGame->m_aExtra[iExtra].m_bActive = FALSE;
        }
    }

    sprintf(m_pGame->m_cExtraText, "");*/

    return TB_OK;
}

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

17

04.06.2004, 19:48

zu welcher klasse gehören die codeabschnitte 1,3 und 4?

18

05.06.2004, 18:37

1 + 3 sind aus Game.cpp

und 4 aus Extra.cpp

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

19

05.06.2004, 23:05

*cd rauskram*

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

20

05.06.2004, 23:25

Schlag micht tot, aber ich finde die var m_pball nit..wie inits du die und vorallem wo?
Die Release hast du ja auskommentiert...aber warum hast ne whilescheife benutz und nit if?
Und du hast >= benutzt, aber wenn m_fExtraTime auf null ist sollte man das Extra deaktivieren.....
Wo steht der codeabschnitt 3 genau?

Werbeanzeige