maus in 3d

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

[SHM]StArMaStEr

Betreff: maus in 3d

BeitragMo, Apr 26, 2004 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich mit drawimage in 3d ein bild mit den mauskoordinaten zeichne dann kann ich die maus nur in einem bestimmten bereich bewegen. woran liegt das? ich habe hier ma den code(sry das ich den ganzen code poste aber weiss nich wo der fehler is Wink )

Code: [AUSKLAPPEN]

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

Dim map(200,200)
tile = LoadAnimImage("gfx/tileset2.bmp",32,32,0,47)

load()

px=6  ;x-koord des players für kollision
py=6  ;y-koord des players für kollision
ppx=6*32  ;x-koord des players
ppy=6*32  ;y-koord des players

cam=CreateCamera()
CameraClsMode cam,0,1
CameraRange cam,1,700
PositionEntity cam,3,3,-5

sprite=LoadSprite("gfx/p.bmp")
ScaleSprite sprite,32,32
PositionEntity sprite,((ppx-scrollx)*2)-640+32,-((ppy-scrolly)*2)+480-32,640

maus = LoadSprite("gfx/maus.bmp")
ScaleSprite maus,0.1,0.1

While Not KeyHit(1)
 For y=0 To 200
  For x=0 To 200
   DrawImage tile,x*32-scrollx,y*32-scrolly,map(x,y)
  Next
 Next

 mx# = MouseX()
 my# = MouseY()
 winkel = ATan2(mx-(ppx-scrollx)*100,(ppy-scrolly)*100-my)
 PositionEntity maus,mx/100,(200-my)/100,5
 RotateSprite sprite,winkel*-1
 PositionEntity sprite,((ppx-scrollx)*2)-640+32,-((ppy-scrolly)*2)+480-32,640

 If zap>0 Then  ; wenn taste gedrückt wurde
  If move=1     ; wenn die cursor-taste oben gedrückt wurde
   scrolly=scrolly-2 ;dann scrolle die map nach oben
   ppy=ppy-2         ;dann scrolle player nach oben
   q=q+1             ;q=q+1
   If q=16 Then      ;wenn q=16
    zap=0            ;dann ist bewegung zu ende
    q=0              ;q=0
    py=py-1          ;kollisionsdaten des players werden aktualisiert
   EndIf
  EndIf
  If move=2           
   scrolly=scrolly+2
   ppy=ppy+2
   q=q+1
   If q=16 Then
    zap=0
    q=0
    py=py+1
   EndIf
  EndIf
  If move=3
   scrollx=scrollx-2
   ppx=ppx-2
   q=q+1
   If q=16 Then
    zap=0
    q=0
    px=px-1
   EndIf
  EndIf
  If move=4
   scrollx=scrollx+2
   ppx=ppx+2
   q=q+1
   If q=16 Then
    zap=0
    q=0
    px=px+1
   EndIf
  EndIf
 EndIf

 If KeyDown(200) Then
  If map(px,py-1)<1 Then
   If zap<1 Then
    move=1               ;move=1 - oben
    zap=1                ;move=2 - unten
    frame=2              ;move=3 - links
   EndIf                 ;move=4 - rechts
  EndIf
 EndIf
 If KeyDown(208) Then
  If map(px,py+1)<1 Then
   If zap<1 Then
    move=2
    zap=1
    frame=3
   EndIf
  EndIf
 EndIf
 If KeyDown(203) Then
  If map(px-1,py)<1 Then
   If zap<1 Then
    move=3
    zap=1
    frame=1
   EndIf
  EndIf
 EndIf
 If KeyDown(205) Then
  If map(px+1,py)<1 Then
   If zap<1 Then
    move=4
    zap=1
    frame=0
   EndIf
  EndIf
 EndIf

 RenderWorld
 Flip
Wend
Function load()
karte$ = ReadFile("map1.map")
For x = 0 To 200
For y = 0 To 200
tile = ReadLine(karte$)
map(x,y) = ReadInt(karte$)
Next
Next
CloseFile(karte$)
End Function

danke im voraus! Laughing
BB-coden was das Zeug hällt!!!!
 

Dreamora

BeitragMo, Apr 26, 2004 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würd behaupten wegen der Positionierung

Das gehört übrigens net in 2D sondern 3D ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Kekskiller

BeitragMo, Apr 26, 2004 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm , müsste das nicht in 3D rein?
Zudem Problem:Eigentlich kann ich da per Speed-Link-Blick nichts
erkennen.Vielleicht liegt es ja auch an B3D an sich , wer weiß.

dimaster

BeitragMo, Apr 26, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
kommt helft schon
 

Dreamora

BeitragMo, Apr 26, 2004 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
nö B3D kann nix dafür dass er die Mausentity zu weit weg von der Cam positioniert.

Die mauskoordinaten also mousex und mousey können nur 0,0 - Screen Width, Screen Height sein

musst also die Z coord der maus reduzieren in bezug auf die cam
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

dimaster

BeitragMo, Apr 26, 2004 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
wie würdet ihrs machen?
 

Dreamora

BeitragMo, Apr 26, 2004 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
maus = loadsprite("gfx/maus.bmp", cam )
positionentity maus, 0, 0, 4.0/3.0


und dann in der loop jeweils nur noch

die x und die y position setzen und für z jeweils 0 da sich der automatisch auf der richtigen position vor der Cam befindet.

beim wert musst du ausprobieren, ich brauche für meine zwecke jeweils meistens 1.3333 da das dem streckungsverhältnis von breite : höhe von bildschirmen entspricht
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

dimaster

BeitragMo, Apr 26, 2004 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
danke

dimaster

BeitragMo, Apr 26, 2004 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
aba geht net
 

Dreamora

BeitragMo, Apr 26, 2004 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Erm

Sorry aber ein bisschen rumprobieren kannste doch wohl auch selbst noch oder?

Die positionierung eines 3D Entity als maus is nunma probieren. nicht mehr und nicht weniger.

und sonst nimmste das bild und zeichnest es direkt mit drawimage auf den Bildschirm
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

dimaster

BeitragMo, Apr 26, 2004 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
mann oh mann da ist immer so ein viereck in dem die maus kreist aber der player bewegt bewegt sich nicht
Arrow Question
Arrow Question
Arrow Question
 

Dreamora

BeitragMo, Apr 26, 2004 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow zuwenig durchdacht

Arrow nochma zurück zu papier und stift und nochma überlegen was genau was tun soll und wie es am besten funktionieren sollte ...

sorry funktionierenden Code werde ich definitiv keinen liefern, denn dann weisst du genau so wenig warum es geht und stösst das nächste ma wieder über s'gleiche Problem
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragDi, Apr 27, 2004 0:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Camera war nicht mittig und die Mauspos. von der Mitte aus
scalieren und dran denken das +y oben ist Wink

Code: [AUSKLAPPEN]


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

cam=CreateCamera()
PositionEntity cam,0,0,-5
CameraClsColor cam,128,128,128

maus =CreateSprite()
ScaleSprite maus,0.2,0.2

While Not KeyHit(1)

mx# = MouseX()
my# = MouseY()
PositionEntity maus,(mx-320)/30,(240-my)/30,5

RenderWorld

Color 255,255,0
Text 10,10,"Maus X:"+mx+" Maus Y:"+my

Flip
Wend
End

dimaster

BeitragDi, Apr 27, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wir haben s müsst nicht mehr posten

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group