jaahas wrote:olen tekemässä ping pong peliä mutta tässä pelissä on 4 lautaa kummallakin pelaajalla ja en osaa tehä tuota viistoon liikkumista voisko joku auttaa laitan pätkän koodista miten olen näitten muitten liikkumisen toteuttanu
Jos nyt oikein ymmärsin, tarkoitit ilmeisesti tällaista:
Code: Select all
//Nämä muuttujat tarvitaan!!
Global _PTL_X#, _PTL_Y#
DrawToWorld ON
Random:
l1x=Rand(-200,200)
l1y=Rand(-150,150)
l2x=Rand(-200,200)
l2y=Rand(-150,150)
Repeat
px=MouseWX()
py=MouseWY()
PointToLine(px,py,l1x,l1y,l2x,l2y)
px=_PTL_X
py=_PTL_Y
Color 128, 128, 128
Line px,py,MouseWX(),MouseWY()
Color 255, 255, 255
Line l1x,l1y,l2x,l2y
Circle px-5,py+5,10
Text 1,1,FPS()
DrawScreen
If KeyHit(cbKeySpace) Then Goto Random
Forever
//Funktio siirtää pisteen suoralle.
//px, py = Lähtöpisteen koordinaatit(esim. hiiri).
//l1x, l1y, l2x, l2y = viivan koordinaatit.
//Funktio sijoittaa uudet koordinaatit.
Function PointToLine (px#, py#, l1x#, l1y#, l2x#, l2y#)
LineA = -GetAngle(l1x, l1y, l2x, l2y) + 90
lastdist# = PointToLineDist(px, py, l1x, l1y, l2x, l2y)
py = py + Sin(LineA) * lastdist#
px = px + Cos(LineA) * lastdist#
lastdist#=PointToLineDist(px, py, l1x, l1y, l2x, l2y)
py = py - Sin(LineA) * lastdist#
px = px - Cos(LineA) * lastdist#
_PTL_X = px
_PTL_Y = pY
End Function
//px, py = Lähtöpisteen koordinaatit(esim. hiiri).
//l1x, l1y, l2x, l2y = viivan koordinaatit.
//Funktio palauttaa pisteen etäisyyden suorasta
Function PointToLineDist (px#, py#, l1x#, l1y#, l2x#, l2y#)
//Suoran yhtälö
a# = (l2y - l1y) / (l2x - l1x)
b# = -1
c# = -(l2y - l1y) / (l2x - l1x) * l1x + l1y
//Etäisyys
d# = Abs(a * px + b * py + c) / Sqrt(a * a + b * b)
Return d
EndFunction
Tuohon vain neljä lautaa tuon yhden pallon sijaan? Tuossa siis se olennainen osa on tuo PointToLine funktio, ja se sitten tarvitsee nuo globaalit muuttujat sekä tuon toisen funktion.
En muista, kuka on tehnyt tuon PointToLineDist-funktion, tais löytyä cbkk:sta, mutta PointToLine on ihan omaa käsialaa