Ongelma objektin törmäysten kanssa

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
AntiMatery
Newcomer
Posts: 2
Joined: Sun Feb 06, 2011 10:45 pm

Ongelma objektin törmäysten kanssa

Post by AntiMatery »

Tarkoituksena olisi että myös mailalla saisi tulipallo pompoteltua. Seinien osalta onnistuukin loistavasti.

Code: Select all

SCREEN 640,480,32

FrameLimit 40

ShowMouse OFF

pad=LoadObject("pad.bmp")
tiles=LoadImage("negative.bmp")
tulipallo = LoadObject ("fireball.bmp",180)

PositionObject pad,-140,0

'Luo pelialueen
map=MakeMap(18,10,32,32)

PaintObject map,tiles

'Asetetaan törmäys tunnistukset
SetupCollision tulipallo, map, 1,4,2
SetupCollision pad, map, 1,4,2
SetupCollision tulipallo,pad, 1,1,2

TurnObject tulipallo,38

'Laskee pallon törmäys kulman käänteiseksi
palloplusx#=Cos(ObjectAngle(tulipallo))*4
palloplusy#=Sin(ObjectAngle(tulipallo))*4

'Piirtää pelialuueelle tarvittavat tilet
Gosub Createmap

Repeat
    
    Text 10,10,"Pallon Cos: "+palloplusx#
    Text 10,20,"Pallon Sin: "+palloplusy#
    Text 200,10,"Mouse world X-axel: "+MouseWX()
    Text 200,20,"Mouse world Y-axel: "+MouseWY()
    Text 10,50,"Törmäyksiä: "+counter
	Box 0,0,640,480,0
'Tarkistaa onko hiirtä liikutettu	
	Gosub Mousemove
'Tarkistaa onko törmäys tapahtunut	
	Gosub Collision
'Siirtää hiiren takaisin keskelle uutta vertailua varten
	PositionMouse 320,240                          
   
    DrawScreen
        
Until EscapeKey()

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Mousemove:

' Vertaa onko hiirtä rullattu alaspäin, jolloin objektia siirretään ruudulla alas
    If MouseWY() < 0 Then						
        Text 100,130,"Moving down" 
        MoveObject pad, 0, -MouseWY() / 14 ' Jaetaan jottei maila liikkuisi liian nopeasto
		
    Else 
        Text 100,140,"Idle"
    EndIf

' Vertaa onko hiirtä rullattu ylöspäin, jolloin objektia siirretään ruudulla ylös
    If MouseWY() > 0 Then
        Text 100,130,"Moving up"
        MoveObject pad, 0, -MouseWY() / 14
		
	Else 
        Text 100,140,"Idle"
    EndIf
	
Return

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Createmap:

	For x=1 To MapWidth()
		EditMap map,0,x,1,2		'Piirto taso
		EditMap map,2,x,1,1 	'Törmäys taso
	Next x

	For y=2 To MapHeight()-1
		EditMap map,0,1,y,2
		EditMap map,2,1,y,1
	Next y

	For y=2 To MapHeight()-1
		EditMap map,0,18,y,2
		EditMap map,2,18,y,1
	Next y

	For x=1 To MapWidth()
		EditMap map,0,x,10,2
		EditMap map,2,x,10,1
	Next x

Return

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Collision:

TranslateObject tulipallo,palloplusx#,palloplusy#
TurnObject tulipallo,20

        If CountCollisions(tulipallo) = 1 Then
            angle=CollisionAngle(tulipallo,1)
            If angle=0 Or angle=180 Then
                palloplusx#= -palloplusx#
            EndIf
            If angle=90 Or angle=270 Then
				palloplusy#= -palloplusy#
			EndIf

            TranslateObject tulipallo,palloplusx#,palloplusy#
        EndIf

'Törmäys laskuri
	If CountCollisions(tulipallo) = 1 Then counter=counter+1

Return

Last edited by AntiMatery on Tue Feb 08, 2011 10:05 am, edited 2 times in total.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Ongelma objektin törmäysten kanssa

Post by phons »

Käytä code /code tageja kun pasteat koodia. Ja mikä siis on ongelmasi? Näen vain koodin, jossa on jotain pallon liikuttamista, hiiren tarkistusta ja mappi collisioneja tjs. Kun kerran mailasi on objekti niin osumine, kimpomien yms. onnistuu samalla tavalla, setupcollision, kuin mappiinkin.
Image
Guest

Re: Ongelma objektin törmäysten kanssa

Post by Guest »

Kiitos hyvästä paste vinkistä. Mutta itse asiaan. Huomasin virheen pasteamassani koodissa. SetupCollision tulipallo,padcow, 1,1,2, joka kuuluisi olla SetupCollision tulipallo,pad, 1,1,2. Mutta loppu tuleman kannalta ei muuttanut asiaa.
Pallon ja mailan välinen törmäys rekisteröidään. Sitä varten tein counterin, joka laskee pallon tuottamien törmäyksien määrän. Mailaan osuessaan pallo vain ei ota kuitenkaan kipoakseen. Siinä siis ongelmani.
AntiMatery
Newcomer
Posts: 2
Joined: Sun Feb 06, 2011 10:45 pm

Re: Ongelma objektin törmäysten kanssa

Post by AntiMatery »

Kiitos hyvästä paste vinkistä. Mutta itse asiaan. Huomasin virheen pasteamassani koodissa. SetupCollision tulipallo,padcow, 1,1,2, joka kuuluisi olla SetupCollision tulipallo,pad, 1,1,2. Mutta loppu tuleman kannalta ei muuttanut asiaa.
Pallon ja mailan välinen törmäys rekisteröidään. Sitä varten tein counterin, joka laskee pallon tuottamien törmäyksien määrän. Mailaan osuessaan pallo vain ei ota kuitenkaan kipoakseen. Siinä siis ongelmani.
Post Reply