kollision wie in wow

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

LINKed

Betreff: kollision wie in wow

BeitragDo, Aug 27, 2009 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hätte für mein spiel gerne so eine kollision wie in world of warcraft oder anderen spielen solcher art.

d.h. ab einem bestimmten winkel kann man nicht mehr an einem hügel (o.ä.) hochlaufen.
und das man wieder runterrutscht wenn man auf eine solche fläche springt.

allerdings habe ich keine ahnung wie ich das realisieren soll xD


ps: ich hab die sufu genutzt abern ix gefunden

faeX

BeitragDo, Aug 27, 2009 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Stichwort: Verlet Physik Integration

Und weil ich einen schönen Tag hatte, gibt's das hier gratis dazu Wink
BlitzBasic: [AUSKLAPPEN]
Graphics3D 800, 600, 32, 1

Collisions PlayerCol, MapCol, 2, 2

Const MapCol% = 1
Const PlayerCol% = 2

Const Gravity# = .05

Global Map% = CreateMesh()

Cube = CreateCube()
ScaleMesh Cube, 100, 1, 100

Cone = CreateCone()
ScaleMesh Cone, 25, 8, 25
PositionMesh Cone, 0, 2, 0

AddMesh(Cube, Map)
AddMesh(Cone, Map)

EntityType Map, MapCol

Global Player% = CreateCone()
RotateMesh Player, 90, 0, 0
PositionEntity Player, 4, 30, 0
EntityColor Player, 255, 0, 0
EntityType Player, PlayerCol

Light = CreateLight()
LightRange Light, 30

Global Camera = CreateCamera()
PositionEntity Camera, 0, 0, -5

SetBuffer BackBuffer()

Global LastX#, LastY#, LastZ#
LastX = EntityX(Player)
LastY = EntityY(Player)
LastZ = EntityZ(Player)

While Not KeyHit(1)

XSpeed# = EntityX(Player) - LastX
YSpeed# = EntityY(Player) - LastY
ZSpeed# = EntityZ(Player) - LastZ

LastX = EntityX(Player)
LastY = EntityY(Player)
LastZ = EntityZ(Player)

XSpeed = XSpeed*.94
YSpeed = YSpeed*.94
ZSpeed = ZSpeed*.94

TranslateEntity Player, XSpeed, YSpeed - Gravity, ZSpeed

TurnEntity Player, 0, 2*(KeyDown(203) - KeyDown(205)), 0
MoveEntity Player, 0, 0, .04*(KeyDown(200) - KeyDown(208))

UpdateWorld

PointEntity Camera, Player
Dist# = EntityDistance(Camera, Player)
If Dist > 3 Then MoveEntity Camera, 0, 0, (Dist-3)/10
TranslateEntity Camera, 0, .02, 0

RenderWorld
Flip

Wend


Nochmal kurz erklärt:
Der Ansatz lautet nicht: Position = Position + Geschwindigkeit
sonder: Position = Position + (Position - AltePosition)

Und durch das 2. wird abrutschen etc. automatisch integriert Wink

Mfg faeX

LINKed

BeitragFr, Aug 28, 2009 10:14
Antworten mit Zitat
Benutzer-Profile anzeigen
cool danke^^

ich probiere es gleich mal aus

Mr.Keks

BeitragFr, Aug 28, 2009 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das doofe an dieses Umsetzung ist, dass man in jedem Winkel abrutscht, da die Fallbeschleunigung nicht bedingt ist...

In Aliens Exist. haben wir das damals so gemacht, dass der Spieler ne Kollisions-Sphere hat und immer auf eine bestimmte Höhe nach unten gelinepickt wird, ob der Spieler auf Boden steht. Wurde etwas getroffen, dann ist alles schick, wurde nichts getroffen, wird der Spieler nach unten beschleunigt. Auf besonders steilen Flächen hat die Sphere dann dazu geführt, dass der Spieler nicht so stehen konnte, dass der LinePick etwas trifft.
MrKeks.net

FireballFlame

BeitragFr, Aug 28, 2009 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es in meinem Spiel gelöst, indem ich alle Kollisionen des Spielers durchgehe und die CollisionNY prüfe.
Die Beschleunigung der Spielers nach unten richtet sich dann nach dem "flachesten" Gelände auf dem er gerade steht: je steiler, umso größer.

Das führt zu einem weichen Übergang: je größer die Steigung, desto mühsamer kommt man hoch; und ab einem bestimmten Winkel wirkt die Gravitation stärker als die Fortbewegung des Spielers und es geht überhaupt nicht mehr Smile
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

LINKed

BeitragSa, Aug 29, 2009 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ich konnte es gerade erst testen da ich noch keine zeit hatte und ich habe gemerkt das ihr mich anscheinend falsch verstanden habt^^

ich möchte das der charakter ab einem winkel von 45° nicht mehr hoch laufen kann und an dieser fläche stopt.
wenn der charakter dann auf diese steile fläche springt rutscht er wieder runter.
außerdem sollte der charakter immer die gleiche geschwindigkeit haben d.h. er ist genauso schnell auf einer flachen wie auf einer steileren fläche. ich hoffe mir kann jetzt jemand helfen xD

@fireballflame: das gleiche kann man mit collisions, typ1,typ2,2,2 und einer einfachen phisik machen:
immer wenn es keine kollision gibt fällt der char nach unten

Mr.Keks

BeitragSa, Aug 29, 2009 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, linked.

1. wenn du nur immer bei keiner kollision nach unten fallen lässt, dann kann man an der decke hängen und an wänden hochklettern (;
2. das, was ich beschrieben habe ist afaik so ziemlich das normale verfahren für egoshooter... und es hat auf jeden fall zum effekt, dass man von zu steilen flächen abrutscht. fireballflames methode kannst du ja auch so abwandeln, dass du nach unten linepickst und genau bei einem PickedNY < 0.5 nach unten beschleunigst.

in wow wird bewegung vermutlich nochmal anders geregelt, aber ich habe es nie gespielt und kann das nicht einschätzen. (zumindest in guildwars gabs, afair gar keine spieler-kollision mit der umgebung, sondern unsichtbare kollisionswände. also eine art 2d-kollisionssystem, wenn mans genau nimmt.)
MrKeks.net

FireballFlame

BeitragSa, Aug 29, 2009 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
LINKed hat Folgendes geschrieben:
@fireballflame: das gleiche kann man mit collisions, typ1,typ2,2,2 und einer einfachen phisik machen:
immer wenn es keine kollision gibt fällt der char nach unten
Mein Charakter fällt ja nicht nur, er rutscht ja auch, wenn er auf steilem Gelände rumläuft. Aber wie Mr. Keks schon schrieb, du kannst ja aus der stufenlosen eine ja/nein-Entscheidung machen, wenn der Winkel deine 45° überschreitet.
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group