[B3D] Kollision zu "stark"

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: [B3D] Kollision zu "stark"

BeitragMi, Feb 24, 2010 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich programmiere ja gerade an einem Rollenspiel.
Wenn Ich einen Hügel hochlaufe, braucht mein Spieler echt ewig, da ich TranslateEntity bei Y auf -1 hab. Wenn ich aller dings Y jetzt auf -0.1 stelle und vom Berg runterlaufe, schwebt er erstmal eine Zeit lang in der Luft bis er unten ist. (logisch, denn -0.1 ist ja nicht gerade viel) wenn ich aber den Y Wert auf mehr als -0.5 stelle dauert das wieder ewig bis er wieder oben ist.

Was kann ich da machen? Er soll schnell hochkommen und auch schnell runter. Rolling Eyes

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Feb 24, 2010 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man Berührungslos in der Luft schwebt, beschleunigt einen üblicherweise die Gravitation nach unten. Wink
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragMi, Feb 24, 2010 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja!
Ich weiß, aber weil ich "TranslateEntity player,0,-0.1,0" geschrieben habe, ist die Beschleunigung nach unten ja so gering, das ich eine Zeit lang noch schwebe.
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Feb 24, 2010 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast gar keine Beschleunigung. Der Spieler fällt ja immer gleich schnell.
Wendest du das immer an, oder nur, wenn der Spieler tatsächlich nicht den Boden berührt?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

FireballFlame

BeitragMi, Feb 24, 2010 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Xeres schon schrieb, die Gravitation beschleunigt einen.
Das heißt, dein TranslateEntity-Wert müsste immer größer werden, solange der Spieler nichts berührt.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

N0X

BeitragMi, Feb 24, 2010 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso...
Ich hab da jetzt mal was vorbereitet.. Rolling Eyes
Aber mein Spieler zittert jetzt minimal hin und her (auf der Y-Achse)

Code-Ausschnitt:
Code: [AUSKLAPPEN]
   
TranslateEntity player,0,transY#,0
If Not EntityCollided(player,MAP) Then
      transY#=transY#-0.1
   Else
      transY#=transY#=0.1
   EndIf
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Feb 24, 2010 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Du bewegst denn Spieler ja immer noch in jedem Fall.
und: transY#=transY#=0.1
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragMi, Feb 24, 2010 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, das mit "transY#=transY#=0.1" sollte: "transY#=0.1" heißen. Embarassed
Aber wie ich das ruckeln wegbekomme habe ich noch nicht verstanden... Shocked

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Feb 24, 2010 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du den Spieler in jedem Frame versetzt, wird er von der Kollision aufgehalten. Wenn er aber mit dem Boden kollidiert, ist es auch nicht nötig ihn nach unten zu ziehen, oder?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragMi, Feb 24, 2010 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
So?

Code: [AUSKLAPPEN]
   TranslateEntity(player,0,-0.1,0)
   
   If Not EntityCollided(player,MAP) Then
      TranslateEntity(player,0,-1,0)
   EndIf


Hab's glaub ich immer noch nicht verstanden, da der Player immer noch zuckt wenn ich z.B. einen Berg runterlauf.
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Feb 24, 2010 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar zuckt der Player noch, du verschiebst ihn ja auch immer nach unten...
Verschiebe den Player nur nach unten, wenn er nicht mit dem Boden kollidiert! Ansonsten gibt es keinen Grund das zu tun.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragMi, Feb 24, 2010 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Also einfach nur so?

Code: [AUSKLAPPEN]
   If Not EntityCollided(player,MAP) Then
      TranslateEntity(player,0,-1,0)
   EndIf


Zuckt immernoch... Embarassed
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragMi, Feb 24, 2010 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt würde ich noch beschleunigte Bewegung einbauen, also kleinere Geschwindigkeit bei kurzen Entfernungen - dann sollte es problemlos klappen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ozzi789

BeitragDo, Feb 25, 2010 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Etwa so..
Code: [AUSKLAPPEN]
If Not EntityCollided(player,MAP) Then
      fallspeed#=fallspeed#*1.1
      TranslateEntity(player,0,fallspeed#,0)
Else
      fallspeed#=0.1
endif
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

N0X

BeitragDo, Feb 25, 2010 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, danke!
Ist zwar immer noch ein klitzekleines "ruckeln" da, aber das ist fast nicht sichtbar, also für mich: Problem gelöst!

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group