schläger und ball

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Peak7810

Betreff: schläger und ball

BeitragSa, Jan 24, 2009 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bau grad an einem flipper, und stehe grad vor einem problem.

geflippert hat ja sicher schon fast jeder mal, zumindest virtuell....

jedenfalls sind ja unten die hebel, so nenne ich sie mal.

wenn diese nun betätigt werden, kommt es drauf an, zu welchem zeitpunkt beide aufeinandertreffen, und daraus resultiert dann die geschwindigkeit des balls, mit welcher er wieder ins spiel befördert wird.

winkel etc. sind momentan unwichtig, weil das hab ich...

wie könnte man das theoretisch lösen?
also hat jemand nen denkanstoß für mich?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Jan 24, 2009 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Schlägerkante um den Ballradius nach Außen versetzt und darauf dann ''Line Intersect'' durchführen. Einfach mal nach ''Line Intersect'' hier im Forum suchen.

Edit1: Für ein Ballverhalten kannst du folgenden Code als Beispiel benutzen:

Code: [AUSKLAPPEN]
;by hectic
Graphics3D 400,600,0,2
SetBuffer BackBuffer()

Local XG#=0
Local YG#=0

Local CM=CreateCamera()
PositionEntity CM,0,0,-8
CameraProjMode CM,2
CameraZoom CM,.02

AmbientLight 255,255,255
SeedRnd MilliSecs()

Local BL=CreateSphere(24)
PositionEntity BL,9,-4,0
ScaleMesh BL,1.8,1.8,1
EntityRadius BL,1.8
EntityType BL,1

Local BR=CreateBrush()
Local MU=CreateMesh(),FU=CreateSurface(MU,BR):EntityType MU,2:Collisions 1,2,2,2:EntityColor MU,96,96,112
Local MB=CreateMesh(),FB=CreateSurface(MB,BR):EntityType MB,3:Collisions 1,3,2,2:EntityColor MB,200,160,80

Local X1,X2,X3,X4
Local Y1,Y2,Y3,Y4
Local Q,MX,MY
Local MXX,MYY

Local NX#,NY#
Local W1#,W2#
Local W3#,W4#
Local SP#



For Q=1 To 42
   Read X1,Y1,X2,Y2,X3,Y3,X4,Y4
   If Q<32 Then MC(FU,X1,Y1,X2,Y2,X3,Y3,X4,Y4):Else MC(FB,X1,Y1,X2,Y2,X3,Y3,X4,Y4)
Next




Function MC(sf,x1,y1,x2,y2,x3,y3,x4,y4)
   AddTriangle sf,AddVertex(sf,x1,y1,0),AddVertex(sf,x2,y2,0),AddVertex(sf,x3,y3,0)
   AddTriangle sf,AddVertex(sf,x3,y3,0),AddVertex(sf,x4,y4,0),AddVertex(sf,x1,y1,0)
   AddTriangle sf,AddVertex(sf,x2,y2,0),AddVertex(sf,x1,y1,0),AddVertex(sf,x1,y1,1)
   AddTriangle sf,AddVertex(sf,x1,y1,1),AddVertex(sf,x2,y2,1),AddVertex(sf,x2,y2,0)
   AddTriangle sf,AddVertex(sf,x3,y3,0),AddVertex(sf,x2,y2,0),AddVertex(sf,x2,y2,1)
   AddTriangle sf,AddVertex(sf,x2,y2,1),AddVertex(sf,x3,y3,1),AddVertex(sf,x3,y3,0)
   AddTriangle sf,AddVertex(sf,x4,y4,0),AddVertex(sf,x3,y3,0),AddVertex(sf,x3,y3,1)
   AddTriangle sf,AddVertex(sf,x3,y3,1),AddVertex(sf,x4,y4,1),AddVertex(sf,x4,y4,0)
   AddTriangle sf,AddVertex(sf,x1,y1,0),AddVertex(sf,x4,y4,0),AddVertex(sf,x4,y4,1)
   AddTriangle sf,AddVertex(sf,x4,y4,1),AddVertex(sf,x1,y1,1),AddVertex(sf,x1,y1,0)
End Function




Data -46,-57,-18,-71,-16,-75,-50,-75
Data -50,-27,-46,-23,-46,-57,-50,-75
Data -50,+31,-35,+16,-35,-12,-50,-27
Data -50,+47,-46,+47,-46,+27,-50,+31
Data -50,+75,-38,+63,-46,+47,-50,+47
Data -50,+75,-22,+75,-22,+71,-38,+63
Data -22,+75,+22,+75,+22,+71,-22,+71
Data +22,+75,+50,+75,+38,+63,+22,+71
Data +38,+63,+50,+75,+50,+47,+46,+47
Data +46,+47,+50,+47,+50,-75,+46,-75
Data +27,+16,+42,+31,+42,-27,+27,-12
Data +38,-23,+42,-27,+42,-55,+38,-57
Data +10,-71,+42,-55,+42,-75,+08,-75
Data -38,-46,-20,-55,-24,-63,-42,-54
Data -42,-28,-38,-30,-38,-46,-42,-54
Data -32,-18,-30,-22,-38,-30,-42,-28
Data +12,-55,+30,-46,+34,-54,+16,-63
Data +30,-30,+34,-28,+34,-54,+30,-46
Data +22,-22,+24,-18,+34,-28,+30,-30
Data -27,-37,-18,-46,-18,-51,-34,-43
Data -34,-35,-27,-28,-27,-37,-34,-43
Data +10,-46,+19,-37,+26,-43,+10,-51
Data +19,-28,+26,-35,+26,-43,+19,-37
Data -24,+45,-21,+48,-18,+45,-21,+33
Data -18,+36,-21,+33,-24,+36,-21,+48
Data -10,+45,-07,+48,-04,+45,-07,+33
Data -04,+36,-07,+33,-10,+36,-07,+48
Data +04,+45,+07,+48,+10,+45,+07,+33
Data +10,+36,+07,+33,+04,+36,+07,+48
Data +18,+45,+21,+48,+24,+45,+21,+33
Data +24,+36,+21,+33,+18,+36,+21,+48
Data -27,-28,-18,-46,-27,-37,-27,-37
Data +10,-46,+19,-28,+19,-37,+19,-37
Data -18,+22,-14,+24,-10,+22,-08,+18
Data -08,+18,-10,+14,-20,+18,-18,+22
Data -10,+14,-14,+12,-18,+14,-20,+18
Data +03,+22,+07,+24,+11,+22,+13,+18
Data +13,+18,+11,+14,+01,+18,+03,+22
Data +11,+14,+07,+12,+03,+14,+01,+18
Data -10,+02,-06,+04,-02,+02,-00,-02
Data -00,-02,-02,-06,-12,-02,-10,+02
Data -02,-06,-06,-08,-10,-06,-12,-02




While Not KeyHit(1)
   YG=YG-0.0075
   
   If EntityY(BL)<-75 Then HideEntity BL:UpdateWorld:PositionEntity BL,0,26,0:UpdateWorld:ShowEntity BL
   
   UpdateWorld
   
   If CountCollisions(BL) Then
      NX#=CollisionNX(BL,1)
      NY#=CollisionNY(BL,1)
      W1#=ATan2(YG,XG)
      W2#=ATan2(NY,NX)
      W3#=180+(W2*2)-W1
      W4#=Abs(Cos(W1-W2)*1.2)^6
      SP#=Sqr(XG^2+YG^2)
      XG=Cos(W3)*SP/(1+W4)
      YG=Sin(W3)*SP/(1+W4)
      If EntityCollided(BL,3) Then XG=XG+Cos(W2)*.6:YG=YG+Sin(W2)*.6
   End If
   
   TranslateEntity BL,XG,YG,0
   RenderWorld
   
   If KeyDown(203) Then XG=XG-.005
   If KeyDown(205) Then XG=XG+.005
   If KeyDown(200) Then YG=YG+.005
   If KeyDown(208) Then YG=YG-.005
   MX=MouseX()/4
   MY=MouseY()/4
   MXX=Int(MX)*4
   MYY=Int(MY)*4
   Line MXX,0,MXX,600
   Line 0,MYY,400,MYY
   Text 20,20,MX-50
   Text 20,40,75-MY
   
   Flip
Wend
End

Relevantes Verhalten wird zwischen Codezeile 114 und 125 berechnet.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group