Einfache Steuerung eines Objektes im Dreidimensionale Raum
Übersicht

BB-FanBetreff: Einfache Steuerung eines Objektes im Dreidimensionale Raum |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe eine Spielfigur und einen Level.
Diese möchte ich wie bei einem ego shooter bewegen. Also links und rechts und nach vorn und hinten ist klar, wenn man von oben schaut. Aber wie macht man das, dass man mit der kamera hinter der figur steht und dann relativ zur position der spielfigur sich bewegen kann. Da ja dann x,y,z nicht mit den globalen positionen übereinstimmen. Wäre für ein paar Denkanstösse sehr dankbar, oder vielleicht sogar eine Lösung. Achja, geht das auch ohne winkelfunktionen? weil das is so bisschen meine schwäche. Und wenn doch, kann mir das dann einer gut erklären, bitte, bitte. Und bitte nich schimpfen dass ich gefragt hab, okay. Danke euch allen. |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Indem du die Kamera als Child des Spielers deklarierst, müsste das gehen.
Code: [AUSKLAPPEN] figur = loadmesh("..") c = CreateCamera(figur) ;in die Klammern kommt das Parent-objekt |
||
Starfare: Worklog, Website (download) |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja schon klar, aber wie steuer ich die figur/camera wie auch immer.
bisher hab ich es nur mit den cursortasten und if ... then x=x+1 usw gemacht. damit kann man die figur auf den globalen koordinaten wunderbar steuern, aber ich brauch die steuerung relativ zur eigenen position/richtung. also stell dir vor, ich will mit einem auto durch den level fahren. wie mach ich das? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ehm mit MoveEntity ![]() Das kommt ehr in Beginners, und nicht in 3D |
||
Twitter
Download Jewel Snake! Windows|Android |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und darum gemoved. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moveentity verschiebt das objekt um werte von x, y, z zur aktuellen position.
wie wende ich das praktisch an? da ja der level nicht nur eine gerade fläche ist, sondern das objekt soll ja sozusagen durch den level "fahren" und bei kollisions stoppen. und nun, beim um die kurve fahren, bzw. beim lenken soll es sich auch in die richtung drehen, und dann ist vorn auch immer dort, wo halt beim fahrzeug vorn ist. translateentity vielleicht. kann mir nicht jemand dabei helfen. ein bisschen code wäre super, oder wenigstens erklären wie man sowas theoretisch machen könnte, die passenden befehle such ich mir dann selber bzw. die umsetzung dazu. bitte, wäre echt lieb. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moveentity lässt das Objekt nach vorne fahren^^
Also egal wie du es drehst, es fährt immer nach VORNE. Also wenn du ein Auto hast, wird es immer nach vorne Fahren (wenn du den Befehl richtig anwendest). Egal wie es sich dreht und verschiebt. Vorne ist immer da, wo die Frontscheinwerfer sind^^ Teste damit mal ein bisschen rum ![]() Drehen geht mit TurnEntity. Les dir am besten die Command Reference bzw die OnlineHilfe durch ![]() Zitat: da ja der level nicht nur eine gerade fläche ist, sondern das objekt soll ja sozusagen durch den level "fahren" und bei kollisions stoppen.
Das wird der schwerste Teil, fürchte ich;) Da musst du mit Collisions und EntityType arbeiten EDIT: HIER EIN KLEINES CODEBEISPIEL =) Code: [AUSKLAPPEN] Graphics3D 640,480
SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,2,-5,14 While Not KeyHit(1) a1=(a1+1) Mod 720 a2=(a2+5) Mod 360 RotateEntity cube,a1/2,0,a2 MoveEntity cube,.5,0,0 RenderWorld Flip Wend End |
||
Twitter
Download Jewel Snake! Windows|Android |
- Zuletzt bearbeitet von Tankbuster am Mo, Okt 29, 2007 16:33, insgesamt einmal bearbeitet
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
für den anfang wär ich froh die steuerung hinzubekommen. | ||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hoffe der Code hilft, sonst PM mich und ich schick dir einen besseren Code. Der oben ist aus der OnlineHilfe ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also mit rotateentity dreh ich das objekt und die relativen achsen drehen sich mit.
daher ist bei moveentity vorn auch immer die richtung, wo die nase vorn ist, sozusagen, richtig? was hat mod 720 und 360 zu bedeuten? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: daher ist bei moveentity vorn auch immer die richtung, wo die nase vorn ist, sozusagen, richtig?
Jo Genau! rotateentity würde ich zum "lenken" nicht nehmen, sondern TurnEntity. Das ist im Prinzip so ähnlich wie MoveEntity. Also wenn du nach rechts lenken willst, dreht sich das Entity immer rechtsrum. Es ist nicht von den Globalen Achsen abhängig ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
@BB-Fan: MOD ermittelt den Restwert von einer Division. In diesem Fall 720/360 | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wert mod 720 macht Wert durch 720 und gibt den Rest aus.
Also zB: 761 mod 720 = 41 |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das ist aber eher subtraktion oder? | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm...nein? Ist 40 MOD 3 = 40-3? Nein. 40 MOD 3 würde 1 geben. (40/3=13 Rest 1) | ||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
vlt wirds dadurch klarer:
1481 Mod 720=41 Also es wird subtrahiert, aber eben Code: [AUSKLAPPEN] Zahl-Int(Zahl/Teiler)*Teiler
|
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie man es häufig verwendet, so auch hier:
Code: [AUSKLAPPEN] a = (a+1) Mod 360
sorgt dafür, dass a immer zwischen 0 und 359 ist. Denn 360 Mod 360 ist 0 und dann fängts wieder von vorne an. Das geht so aber nicht, wenn a negativ ist. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay alles verstanden.
Habs jetzt sogar hinbekommen die steuerung. Nur mit der camera das klappt nicht so. Im moment hab ich die camera eigentlich einfach nur hinter das Objekt plaziert und es bewegt sich halt synchron mit, also auch bei einer rotation, was ja eigentlich völliger Quatsch ist. Wie macht man sowas am günstigsten? Also Objekt1 ist das Raumschiff oder wasauchimmer, und die Kamera hängt hintendran. Wenn ich jetzt Objekt1 drehe, dreht sich die Kamera mit, aber der Blickwinkel haut nicht hin. Also theoretisch reicht eine mitdrehung nicht aus, sondern die kamera müsste sich direkt hinten dran hängen. Also starr sozusagen. So, und damit ich nicht alles erfragen muss, hab ich mal geschaut. Kommt da Pivot in Frage? Wenn ja, wie mach ich das. Nur einen Pivot kreieren, dann beim laden des Objekt mit dranhängen, und dann? Wie lass es das ganze praktisch aussehen, seh da nicht wirklich durch, weil ja das pivot egentlich das objekt sein müsste und die kamera dranhängt. So, jetzt bin ich total durcheinander. Mist |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einfach nur ein Befehl :
Zitat: EntityParent
![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aha, und der hängt dann das child starr hinten dran, werd ich später gleich probieren
hab jetzt einfach mal entityparent probiert, klappt auch, nur dass jetzt das objekt nicht mehr zu sehen ist, nur noch die camera. hat das jetzt die gleichen koordinaten. soll da jetzt nochmal ein move mit rein, um nen abstad zu haben? aber das geht sicher einfacher, oder? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group