Hallo.
Ich probiere nun selber 3D Blobby Volley zu schreiben. Die Models und das Menü stehen schon. Das Bewegen der Spielfigur funktioniert auch.
Ich habe jetzt für den Ball und für die Figure die Klasse tbObject benutzt.
Doch wie kann ich es am realistischten Springen lassen?
Ich habe schon probiert bei Tastendruck eine Kraft nach oben wirken zulassen. Doch nur das runter ist ein problem.
Ich wollte das so gestalten, dass man hinterher im Menü die Erdanziehungskraft angeben kann. Doch ich bin am verzweifeln wie man das machen kann.
(Wir haben zwar in Pysik gerade Kräfte aber leider noch nicht Beschleunigung)
Vielleicht könnt ihr mir ja da weiter helfen.
Außerdem probiere ich gerade eine den Ball beim berühren der Spielfigur abspringen zulassen.
|
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
|
int gravity=20; //Anziehungskraft
tbVector3 Attack; //Angriffspunkt beim Treffen des Balles
if(!Ballfree) //Ist der ball frei oder beim Aufschlag
{
oBall->SetPosition(tbVector3(0,40,-20)); //Beim aufschlag->also ball auf Startposition
oBall->SetVelocity(tbVector3(0,0,0));
if(tbModelHitsModel(g_mPlayer, oPlayer->GetMatrix(), oPlayer->GetInvMatrix(),
g_mBall, oBall->GetMatrix(), oBall->GetInvMatrix(), &Attack)) //Prüfen ob Spielermodel das Ballmodel trifft
{
Ballfree=true; //Jetzt den ball freisetzen
oBall->ApplyForce(Attack,oPlayer->GetVelocity()); //Kraft auf den Ball auswirken
tbWriteToLog("Aufgabe gespielt.");
}
}else{
//Ball ist im Spiel
if(tbModelHitsModel(g_mPlayer, oPlayer->GetMatrix(), oPlayer->GetInvMatrix(),
g_mBall, oBall->GetMatrix(), oBall->GetInvMatrix(), &Attack)) //Kollision prüfen
{
oBall->ApplyForce(Attack,oPlayer->GetVelocity()); //Kollision vorhanden-> Kraft ausüben
tbWriteToLog("Hit!");
}
oBall->AddVelocityRel(tbVector3(0,-gravity,0)); //Kraft nach unten wirken lassen
if(oBall->GetPosition().y>=0) //Wenn Ball aus, dann neuer Aufschlag
Ballfree=false;
}
|
Doch wenn man nun den Ball berührt ist dieser plötzlich weg. Was mache ich da falsch?
Gruß Flo