mehrere probleme

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

ZaRaK

Betreff: mehrere probleme

BeitragSo, Mai 16, 2004 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
1. wie kann ich einen loadscreen am anfang erstellen, das alle meshs und texturen geladen werden, ne % anzeige wär cool, aber das is kein muss

2. mesh/mesh collision, wie kann ichs machen, das wenn ich mesh1 bewege und das gegen mesh2 kommt, seinen moveentity befehl sofort stoppt und stehn bleibt (bei mir rennt das durch mesh2 durch und kommt wieder zurück, läuft dann wieder durch mesh2 durch.. also von einer seite zur andern)

3. wenn ich die kamera parent und point auf mesh1 setze, zieht die kamera auf einma runter ins terrain rein, wie kann ich machen das sich die kamera konstant auf einer höhe befindet?

4. wenn ich das mesh zB nach rechts bewege, pointet das sofort in die richtung, wie kann ich einen trägheitseffekt einbauen, das sich das mesh langsam in die richtung dreht, wo ich hin geklickt habe...


wenn diese probleme gelöst werden könnte, wär ich echt scheiss dankbar...
hier mal der komplette code... (sry, aber ich krieg das mit dem includen net hin, deswegen alles in einer file)

Code: [AUSKLAPPEN]

Graphics3D 1024,768,32,2
SetBuffer BackBuffer()


;globals
Global inv = LoadSprite("inventar.bmp")
Global i=0


;terrain
terrain = LoadTerrain("map.bmp")
ScaleEntity terrain, 50,300,50

pivot = CreatePivot()


;wasser und licht
wasser = CreatePlane()
light = CreateLight()
AmbientLight       255,255,255
MoveEntity wasser,   0, 20,  0
EntityAlpha wasser,0.5


;meshs
mesh = CreateSphere()
ScaleEntity mesh, 5,5,5
item = LoadMesh("item.x")


;texturen
Text1 = LoadTexture("gras.jpg")
wassertext = LoadTexture("wasser.jpg")
metall = LoadTexture("metbgr02.jpg")

EntityTexture item, metall
EntityTexture terrain,Text1,0,0
EntityTexture wasser,wassertext

ScaleTexture text1,        3,  3
ScaleTexture wassertext, 100,100
ScaleTexture metall,      -2, -2

;cam
cam = CreateCamera()
CameraFogMode cam,    1
CameraRange cam,      1,30000
CameraFogRange cam, 100, 4000
CameraFogColor cam,  40,  140,  255
CameraClsColor cam,  40,  140,  255


;positionen
PositionEntity cam,    500, 400, 600
TurnEntity cam,         45,   0,   0
PositionEntity mesh,   500, 300, 700
PositionEntity pivot,  500, 300, 700
PositionEntity item,   550, 300, 750
ScaleEntity item,       30,  30,  30

PositionEntity item, EntityX(item), TerrainY(terrain,EntityX(item), EntityY(item),EntityZ(item)),EntityZ(item)


;inventar
ScaleSprite inv,1,0.5
EntityParent inv,cam


While Not KeyHit(1)


;;;;;;;;;;;code;;;;;;;;;;;
EntityPickMode terrain,2,1


;bewegung
MoveDist# = 0.5
If EntityDistance(mesh,pivot) > 2*MoveDist Then PointEntity mesh,pivot

If EntityX(mesh)<EntityX(pivot) +MoveDist/2 Or EntityX(mesh)>EntityX(pivot)-MoveDist/2 Or EntityY(mesh)<EntityY(pivot)+MoveDist/2 Or EntityY(mesh)>EntityY(pivot)-MoveDist/2 Or EntityZ(mesh)<EntityZ(pivot)+MoveDist/2 Or EntityZ(mesh)>EntityZ(pivot)-MoveDist/2 Then
MoveEntity mesh,0,0,MoveDist
PositionEntity mesh, EntityX(mesh), TerrainY(terrain,EntityX(mesh), EntityY(mesh),EntityZ(mesh)),EntityZ(mesh)
EndIf

If MouseDown(1) Then
CameraPick(cam,MouseX(),MouseY())
PositionEntity pivot,PickedX(),PickedY()+TerrainY+5,PickedZ()
EndIf


;collision
If MeshesIntersect(mesh,item) Then PositionEntity pivot, EntityX(mesh), TerrainY(terrain,EntityX(mesh), EntityY(mesh),EntityZ(mesh)), EntityZ(mesh)


;inventar
If KeyHit(23) Then i=1-i
If i=1 And KeyHit(23) Then i=0

PositionEntity inv, camx+4,camy-3.25,camz+5

If i=1 Then ShowEntity inv
If i=0 Then HideEntity inv


;kamerasteuerung
If KeyDown(17) MoveEntity cam, 0,0,2
If KeyDown(31) MoveEntity cam, 0,0,-2

If KeyDown(19) MoveEntity cam, 0,2,0
If KeyDown(33) MoveEntity cam, 0,-2,0

If KeyDown(18) TurnEntity cam, 2,0,0
If KeyDown(16) TurnEntity cam, -2,0,0

If KeyDown(30) TurnEntity cam, 0,2,0
If KeyDown(32) TurnEntity cam, 0,-2,0



UpdateWorld
RenderWorld
Flip
Wend
 

ZaRaK

BeitragSo, Mai 16, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
problem 2 gelöst, thx für die PN
 

ZaRaK

BeitragSo, Mai 16, 2004 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
problem 3 gelöst, ich mach das mit der kamera jetz ganz anders...
aber bei 1 und 4 bräucht ich echt ma unterstützung...

Tagirijus

ehemals "Tag"

Betreff: :-D

BeitragMo, Mai 17, 2004 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Also 1. wäre es schon cooler, wenn ihr diese Frage nicht per PN
beantwotet, weil es möglicher Weise noch andere Personen mit
den selben Problemen gibt. Very Happy

So, und nun mal zu Punkt 4:

Da ich das selbe Prob habe, hab ich das ma so gemacht:
ich hab das

Code: [AUSKLAPPEN]
If EntityDistance(entity,pentity) > 2*MoveDist Then PointEntity entity,pentity


durch das hier ersetzt


Code: [AUSKLAPPEN]
If EntityDistance(entity,pentity) > 2*MoveDist Then

If EntityX(pentity) > EntityX(entity) And EntityZ(pentity) > EntityZ(entity) Then
   turn_angle# = ATan( (EntityZ(pentity)-EntityZ(entity))  /  (EntityX(pentity)-EntityX(entity)) )
   If angled# < turn_angle# Then angled# = angled# + speed#
   If angled# > turn_angle# Then angled# = angled# - speed#
   RotateEntity entity,0,angled#,0
End If
If EntityX(pentity) < EntityX(entity) And EntityZ(pentity) > EntityZ(entity) Then
   turn_angle# = ATan( (EntityX(pentity)-EntityX(entity)) / (EntityZ(pentity)-EntityZ(entity)) )
   turn_angle# = turn_angle# * -1
   turn_angle# = turn_angle# + 90
   If angled# < turn_angle# Then angled# = angled# + speed#
   If angled# > turn_angle# Then angled# = angled# - speed#
   RotateEntity entity,0,angled#,0
End If
If EntityX(pentity) < EntityX(entity) And EntityZ(pentity) < EntityZ(entity) Then
   turn_angle# = ATan( (EntityX(pentity)-EntityX(entity)) / (EntityZ(pentity)-EntityZ(entity)) )
   turn_angle# = turn_angle# * -1
   turn_angle# = turn_angle# - 90
   If angled# < turn_angle# Then angled# = angled# + speed#
   If angled# > turn_angle# Then angled# = angled# - speed#
   RotateEntity entity,0,angled#,0
End If
If EntityX(pentity) > EntityX(entity) And EntityZ(pentity) < EntityZ(entity) Then
   turn_angle# = ATan( (EntityZ(pentity)-EntityZ(entity)) / (EntityX(pentity)-EntityX(entity)) )
   If angled# < turn_angle# Then angled# = angled# + speed#
   If angled# > turn_angle# Then angled# = angled# - speed#
   RotateEntity entity,0,angled#,0
End If
end if


nur klappt das irgendwie nicht.....bei einem Früheren Code ging es jedoch.
und der sah nich so anders aus.....
das mesh lässt sich jetzt nicht mehr steuern....ne, es haut eher nach hinten aufa z achse ab Sad
entdeckt ihr'n fehler, bzw. glaubt ihr, dass der code-denkansatz gut ist?

Thx im voraus Very Happy
Tagirijus.de
 

ZaRaK

BeitragMo, Mai 17, 2004 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hm... weiss wohl niemand wie das geht, bzw, will sich keiner die mühe machen das alles hier rein zu tippen ^^
 

Dreamora

BeitragMo, Mai 17, 2004 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das lässt sich so wohl eher garnicht lösen.

Da kommste um ein klein wenig mathe lernen net rum -> Vektormathe

Denn da wirds relativ simpel weils dafür die Newtonschen Gesetze gibt Smile

Tagirijus

ehemals "Tag"

Betreff: ??

BeitragMo, Mai 17, 2004 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso? Man kann doch eigentlich auch normale
Sinus-sätze nehmen, so wie ich's gemacht hab, oder?
Tagirijus.de
 

ZaRaK

BeitragMo, Mai 17, 2004 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
wo gibbet tutorial für das vektormathe?
muss ich mir ma genauer anguggn...
 

Dreamora

BeitragMo, Mai 17, 2004 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Im mathebuch würd ich sagen Smile

mit sinus satz geht das nicht weil es ja ne trägheitskraft wird, welche in die ehemalige bewegungsrichtung geht und durch den beschleunigungsvektor verändert wird

Tagirijus

ehemals "Tag"

BeitragMo, Mai 17, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich würde jedoch darunter jetzt nur verstehen, dass er
"gesmooft" dahin gucken soll...der charakter, da müsste es doch
mindestens mit sinus gehen, oder? SO wie mein Bsp. eben zeigt, oder?
es hatte bei mir ja schonmal geklappt!!!! Smile
Tagirijus.de
 

ZaRaK

BeitragMo, Mai 17, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
mathebuch is bei mir schlecht...
ich mach ausbildung in elektrotechnik, da hab ich sowas nicht :>
 

ZaRaK

BeitragMo, Mai 17, 2004 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ma kurz was anderes dazwischen....

Code: [AUSKLAPPEN]

If MouseX()=EntityX(item) And MouseY()=TerrainY(terrain,EntityX(item), EntityY(item), EntityZ(item)) And MouseHit(2) Then
CameraPick(cam,MouseX(),MouseY())
HideEntity item
EndIf


ich will, wenn ich mit der maus über nem item bin und die rechte taste drücke, das item ins inventar aufnehmen (ersma mit hide, zum "einstecken").... aber irgendwie krieg ichs net hin... ich peil das mit den achsen wohl net so ganz... wie krieg ich das hin?
 

Dreamora

BeitragMo, Mai 17, 2004 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hatten wir das nicht schonma

das es nicht geht dass du = verwenden kannst weil es so gut wie garnie eine komplett identische position ergeben wird *ggg*

entweder innerhalb eines radius oder du verwendet einen der pickmodes Smile
 

ZaRaK

BeitragDi, Mai 18, 2004 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
D'oh! Shocked
 

ZaRaK

BeitragMi, Mai 19, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
das mit dem item aufheben hab ich jetz so geregelt
Code: [AUSKLAPPEN]

If EntityDistance(mesh,item) < 20 And MouseHit(2) Then
CameraPick(cam,MouseX(),MouseY())
FreeEntity item
EndIf

kann ich das so lassen und weiterhin so machen, auch mit andern items, oder werd ich da evtl später probleme bei bekommen?

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group