warum keine terrain collission?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: warum keine terrain collission?

BeitragSo, Nov 26, 2006 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 640,480,16,1
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,1,1,1
light=CreateLight()
RotateEntity light,90,0,0

;TERRAIN SACHEN

terrain=LoadTerrain("heightmap.png")
TerrainDetail terrain,4000,True
ScaleEntity terrain,1,50,1
grass_tex=LoadTexture("schnee.png")
EntityTexture terrain,grass_tex,0,1

;Sachen Laden
HidePointer
Global fadenkreuz=LoadImage("fadenkreuz.png")
MaskImage fadenkreuz,0,0,255

;CAMERA
Global cameraa=CreateCamera()
MoveEntity cameraa,150,150,110
Pivot = CreatePivot(cameraa)
Global CameraX,CameraY,CameraZ,XWinkel,YWinkel
a#=0.5



MoveMouse 320,240

SetBuffer BackBuffer()
Hauptspiel()

;--------------------FUNCTIONS-------------------------------------

Function Hauptspiel()


Repeat

;Camera Position ermitteln um die werte auch
  ;Später Speichern und wieder laden zu können
  CameraX = EntityX(cameraa)
  CameraY = EntityY(cameraa)
  CameraZ = EntityZ(cameraa)
  XWinkel = EntityYaw(cameraa)
  YWinkel = EntityPitch(cameraa)

  CameraXMove#=0
  CameraZMove#=0

;----------------BEWEGUNG-------------------------

  If KeyDown(200) Then
    CameraZMove# = 6.0
  EndIf
  If KeyDown(208) Then
    CameraZMove# = -6.0
  EndIf
  If KeyDown(203) Then
    CameraXMove# = -6.0
  EndIf
  If KeyDown(205) Then
    CameraXMove# = 6.0
  EndIf
   RotateEntity cameraa,EntityPitch(cameraa)+MouseYSpeed()*.10,EntityYaw(cameraa)-MouseXSpeed()*.10,0
  MoveEntity Cameraa,CameraXMove#,0,CameraZMove#
  MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

;------------------------ZOOM-----------------------

 If Cam_Zoom = 0 Then
    If MouseHit(2) And MouseDown(2) Then
      Cam_Zoom = 1
    EndIf
  EndIf

  If Cam_Zoom = 1 Then
    If zoom# < 10.0 Then
      zoom# = zoom# + .10
    EndIf
    CameraZoom camera,zoom#
  EndIf

 TranslateEntity cameraa,0,-10,0
 
   RenderWorld

Print "x" + camerax   

Flip

Until KeyHit(1)

End


End Function


HI,
wisst ihr warum ich hier durchs terrain falle??
wenn ich translateentity weglasse,dann kann ich enfach durchs terrain laufen,und wenn ichs hin mache,ist alles schwarz,womöglich weil ich durchfalle.

Hab ihr ne idee was ich falsch geacht hab???

wäre nett wenn ihr antworten würdet.

mfg marius
 

Dreamora

BeitragSo, Nov 26, 2006 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast nichts falsch gemacht, du hast nur keine Kollision gesetzt womit er halt auch nicht kollidiert. Wobei man bei Terrains häufig garnicht erst auf Kollision geht sondern TerrainY nimmt um die Höhe des Terrains unter sich zu errechnen.

~VERSCHOBEN~

falsches Board
Dreamora
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mas93

BeitragSo, Nov 26, 2006 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ahh,k
aber wie mache ich das mit dem terrain y?

BladeRunner

Moderator

BeitragSo, Nov 26, 2006 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:terrainy
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

mas93

BeitragSo, Nov 26, 2006 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
sry,aber da ich noch anfänger in 3d bin weis ich nich genau wie ich das machen soll.
Könntet ihr mir einmal den code schreiben???

BladeRunner

Moderator

BeitragSo, Nov 26, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir bitte den code an der in der Onlinehilfe mitgegeben wird. Was wird da mit terrainy gemacht? Der Code ist sehr simpel und noch dazu lauffähig, also teste ihn einfach.

EDIT: Ups, daq fehlen eventuell die medias. Das ist aber nicht schlimm: height_map.bmp sollte ein bild aus grausstufen sein. Für mossygrass kannst du jede beliebeige textur nehmen.
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

FreetimeCoder

BeitragSo, Nov 26, 2006 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 640,480,16,1
SetBuffer BackBuffer()

;Kollisionstypes:
Const Player=1,Ground=2

camera=CreateCamera()
PositionEntity camera,1,1,1
light=CreateLight()
RotateEntity light,90,0,0

Entitytype camera,Player ;< Kamera den Kollisionstype zuweisen

;TERRAIN SACHEN

terrain=LoadTerrain("heightmap.png")
TerrainDetail terrain,4000,True
ScaleEntity terrain,1,50,1
grass_tex=LoadTexture("schnee.png")
EntityTexture terrain,grass_tex,0,1

Entitytype terrain,Ground ;< das gleiche beim Terrain

;Kollisionen festlegen:
collisions Player,Ground,2,2

[...]

;CAMERA ??? Ich verstehe nicht warum du 2 Kameras brauchst? und noch einen Pivot IN der Kamera?

Global cameraa=CreateCamera()
MoveEntity cameraa,150,150,110
Pivot = CreatePivot(cameraa)
Global CameraX,CameraY,CameraZ,XWinkel,YWinkel
a#=0.5


Als letztes noch ein "Updateworld" vor Renderworld, dann solltest du nicht mehr durchfallen Wink
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

BladeRunner

Moderator

BeitragSo, Nov 26, 2006 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
...immer schön vorkauen damit er auch bloß nichts lernt.
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

FreetimeCoder

BeitragSo, Nov 26, 2006 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja du hast ihn doch auch eine falsche Fährte gebracht! TerrainY ist etwas völlig anderes als Kollision. Und außerdem habe ich im Code alles erklärt Confused Confused
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

BladeRunner

Moderator

BeitragSo, Nov 26, 2006 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittels terrainy kann er seine Figur ausrichten ohne sich um eine Kollisin zu kümmern.
Nix falsche Fährte.
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
 

Dreamora

BeitragSo, Nov 26, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Richtig.
Kollision und Pick braucht man bei einem Terrain nur dann wenn man für irgendwelche Arten von Physik die Oberflächennormale benötigt an dem Punkt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mas93

BeitragSo, Nov 26, 2006 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank für eure mühen.An hand des codes(in dem alles gut beschrieben ist) hab ich das endlich kapiert.

mfg marius

mas93

BeitragSo, Nov 26, 2006 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 1024,768,16,1
SetBuffer BackBuffer()

;Kollisionstypes:
Const Player=1,Ground=2

camera=CreateCamera()
PositionEntity camera,1,1,1
light=CreateLight()
RotateEntity light,90,0,0

EntityType camera,Player ;< Kamera den Kollisionstype zuweisen

;TERRAIN SACHEN

terrain=LoadTerrain("heightmap.png")
TerrainDetail terrain,4000,True
ScaleEntity terrain,1,50,1
grass_tex=LoadTexture("schnee.png")
EntityTexture terrain,grass_tex,0,1

EntityType terrain,Ground ;< das gleiche beim Terrain



;Sachen Laden
HidePointer
Global fadenkreuz=LoadImage("fadenkreuz.png")
MaskImage fadenkreuz,0,0,255

;CAMERA
Global cameraa=CreateCamera()
MoveEntity cameraa,150,150,110
Pivot = CreatePivot(cameraa)
Global CameraX,CameraY,CameraZ,XWinkel,YWinkel
a#=0.5



MoveMouse 320,240

SetBuffer BackBuffer()
Hauptspiel()

;--------------------FUNCTIONS-------------------------------------

Function Hauptspiel()


Repeat

;Camera Position ermitteln um die werte auch
  ;Später Speichern und wieder laden zu können
  CameraX = EntityX(cameraa)
  CameraY = EntityY(cameraa)
  CameraZ = EntityZ(cameraa)
  XWinkel = EntityYaw(cameraa)
  YWinkel = EntityPitch(cameraa)

  CameraXMove#=0
  CameraZMove#=0

;----------------BEWEGUNG-------------------------

  If KeyDown(200) Then
    CameraZMove# = 6.0
  EndIf
  If KeyDown(208) Then
    CameraZMove# = -6.0
  EndIf
  If KeyDown(203) Then
    CameraXMove# = -6.0
  EndIf
  If KeyDown(205) Then
    CameraXMove# = 6.0
  EndIf
   RotateEntity cameraa,EntityPitch(cameraa)+MouseYSpeed()*.10,EntityYaw(cameraa)-MouseXSpeed()*.10,0
  MoveEntity Cameraa,CameraXMove#,0,CameraZMove#
  MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

;------------------------ZOOM-----------------------

 If Cam_Zoom = 0 Then
    If MouseHit(2) And MouseDown(2) Then
      Cam_Zoom = 1
    EndIf
  EndIf

  If Cam_Zoom = 1 Then
    If zoom# < 10.0 Then
      zoom# = zoom# + .10
    EndIf
    CameraZoom camera,zoom#
  EndIf

 TranslateEntity cameraa,0,-10,0

;Kollisionen festlegen:
Collisions Player,Ground,2,2

;:::::::::::::SCHLUSSSACHEN::::::::::::::::::::::::::::::::
 
UpdateWorld 
RenderWorld

Print "x" + camerax   
DrawImage fadenkreuz,493,366

Flip
Until KeyHit(1)
End

End Function


sry das ich jezt nochmal den ganzen code paste,aber irgendwas stimmt immer nich nicht.Ich hab jetzt alles was ihr gesagt habt eingebaut,es gibt aber immer noch keine collision..

Wisst ihr warum??

wäre nett wenn ihr mir nocheinmal helfen könnten
thx
mfg marius

NewJerzy

BeitragSo, Nov 26, 2006 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du dir das Beispiel von Blade Runner nicht anschaust dann kann das ja gar nicht richtig funktionieren!
Mach das mal, was dir Blade-Runner gesagt hat, der Code in der OH ist nämlich echt nicht schwer zu verstehen...

Wenn es danach immer noch nicht geht, dann haste wo anders n Denkfehler!

Probier das mit TerrainY() auf jeden Fall mal aus!!




jerzy
Projekt: NewJerzy Online (40%) - Wird wahrscheinlich nciht mehr weitergearbeitet
Projekt: Arbeitszimmer (3.9%) - Schreibtisch und Laptop vollendet
Hier gehts zum Thread: Klick

Ach ja, meine FilmAG Website:
Hier Klicken

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group