Hey guys,
I have been putting together a small platformer game, and I am at the stage of adding another player object in, so there are two active players, one controlled by the keyboard, the other - by the mouse.
Sparkys is required,
no media required.
i want to implement this mouse inertia code and apply it to a new object-
set display mode 1024,768,32,1
sync on
sync rate 60
color backdrop 0
autocam off
hide mouse
set camera fov 100
`position and rotate the camera
position camera 0,150,0
Xrotate camera 90
`Make the player object
PlayerObject=ObjQT+6
make object sphere PlayerObject,10
color object PlayerObject,rgb(255,0,200)
x#=0.0
y#=0.0
position object PlayerObject,x#,120,y#
PlayerMemx#=0.0
PlayerMemy#=0.0
MaxDistFromZero#=150.0
do
mmx=mousemoveX()
mmy=mousemovey()
`using the camera's Y angle and the mouse movement,
`calculate the player's movement
MouseMoveAng#=wrapvalue(atanfull(mmx,-mmy)+CamYang#)
MouseMoveDist#=(sqrt(abs(mmx)^2+abs(mmy)^2)*0.009)
`finally get the player's new position in 3d space
`PlayerPosX#=PlayerPosX#+(sin(MouseMoveAng#)*MouseMoveDist#)
`PlayerPosZ#=PlayerPosZ#+(cos(MouseMoveAng#)*MouseMoveDist#)
PlayerMemX#=PlayerMemX#+(sin(MouseMoveAng#)*MouseMoveDist#)
PlayerMemZ#=PlayerMemZ#+(cos(MouseMoveAng#)*MouseMoveDist#)
x#=x#+PlayerMemX#
y#=y#+PlayerMemZ#
`position the player object
position object PlayerObject,x#,20,y#
sync
loop
Into my main code.
Rem Project: Tucker collision
Rem Created: Saturday, October 30, 2010
Rem ***** Main Source File *****
sync on : sync rate 60
rem Setup display
set display mode 800,600,32
autocam off : hide mouse
backdrop on : color backdrop rgb(255,255,255)
set ambient light 20 : color ambient light 50
global numSpheres as integer : numSpheres = 5
global radius# as float : radius# = 10.0
global littleRadius# as double float : littleRadius# = 2.0
global ScrWid : ScrWid = screen width()
global ScrHgt : ScrHgt = screen height()
global rtimer as integer
global stimer as integer
global vtimer as integer
rem player movement vector
global vx# as double float
global vy# as double float
global vz# as double float
global gravity# as double float : gravity# = -0.1
global slope# as double float : slope# = 0.5
global ground as integer : ground = 1
global jumptimer as integer : jumptimer = 0
global collide : global collide2 : global collideGroup
global syncmode as integer : syncmode = 60
global view as integer : view = 1
global hide as integer : hide = 0
global PlayerDied : global Gameover
DIM bullet(6,6) : DIM enemy(100,10) : dim TLA(134,12)
gosub InitVars
gosub MakeObjects
gosub CreateLevel
IF TotalEnemies > 0 THEN GOSUB SetupEnemies
`gosub SwitchControls ` subroutine companion movement
score=0:lives=3
` *********************************** Main loop ************************************
repeat
`Print Score Level and Lives on screen
MovePlayer(player)
rem Control camera
x# = object position x(player)
y# = object position y(player)
z# = object position z(player)
position camera x#,y#,z#-400
point camera x#,y#,z#
gosub Debug
if PlayerDied = 1
gosub PlayerDying
endif
If leftkey()=1
Direction = Left
ELSE
Direction = Right
Endif
gosub CollideDoors
gosub MoveBullets
gosub MoveEnemies
rem Update screen
sync
rem End main loop
until PlayerDied = 1
end
` *********************************** Functions ************************************
function movePlayer(player)
oldx# = object position x(player)
oldy# = object position y(player)
oldz# = object position z(player)
rem apply gravity, and user changes to movement
angy# = object angle y(player)
vx# = 0
vz# = 0
rem if player is jumping or falling then apply 'normal' gravity
rem if not attempt to keep the player stuck to the floor
if vy#=0 and jumptimer=0 then vy# = vy# + 10*gravity# else vy# = vy# + gravity#
if keystate(205)=1 then vx# = vx# + cos(angy#) : vz# = vz# - sin(angy#) : ` right key
if keystate(203)=1 then vx# = vx# - cos(angy#) : vz# = vz# + sin(angy#) : ` leftkey
`if keystate(31)=1 then vx# = vx# - sin(angy#) : vz# = vz# - cos(angy#) : ` S
` if keystate(17)=1 then vx# = vx# + sin(angy#) : vz# = vz# + cos(angy#) : ` W
rem only jump if on ground, and a certain time after last jump
IF returnkey () = 1 AND TIMER() > BulletTimer THEN GOSUB FireBullet
if ground=1
if spacekey()=1 and jumptimer=0 then jumptimer = 17
endif
if jumptimer > 0
inc vy#,0.3
dec jumptimer
` if jumptimer = 0 then vy# = 0.0
endif
rem this would be the player's final position without collision
x# = oldx# + vx#
y# = oldy# + vy#
z# = oldz# + vz#
collide3 = sc_SphereCastGroup(3,oldx#,oldy#,oldz#,oldx#,oldy#+vy#,oldz#,radius#,0)
if collide3 > 0 then PLayerDied = 1
collide = sc_SphereCastGroup(2,oldx#,oldy#,oldz#,oldx#,oldy#+vy#,oldz#,radius#,0)
if collide > 0 or collide3 > 0 : ` check against the boxes that make up the world
rem how flat is this ground
ny# = sc_getCollisionNormalY()
if abs(ny#) > slope# :`and jumptimer = 0
rem FLAT, stick
oldy# = sc_getStaticCollisionY()
else
rem STEEP, slide
x# = x# - oldx# : z# = z# - oldz#
oldx# = sc_getCollisionSlideX()
oldy# = sc_getCollisionSlideY()
oldz# = sc_getCollisionSlideZ()
x# = x# + oldx# : z# = z# + oldz#
endif
rem ny#<0 means the player has hit a ceiling rather than a floor
if ny#>slope# : `and jumptimer = 0
rem only on ground if standing on flat ground
ground = 1
vy# = 0
else
ground = 0
rem if player has hit a flat ceiling then stop vy# movement
if ny#<-slope# then vy# = gravity#
endif
else
if collide = 0 and collide3 = 0
rem nothing below player, not on ground, add vertical speed to player
oldy# = oldy# + vy#
ground = 0
endif
endif
` check against coins
collide1 = sc_SphereCastGroup(1,oldx#,oldy#,oldz#,oldx#,oldy#+vy#,oldz#,radius#,0)
if collide1 > 0 : ` check for coins
ObjCollided = SC_getObjectHit (collide)
time = timer() + 1000
repeat
text 100,100,"You picked up a coin!"
text 100,120,"collided with " + str$(ObjCollided)
sync
UNTIL timer() > time
inc score, 100
`DisplayScore()
if ObjCollided > 0
if object exist(ObjCollided) = 1 then sc_removeobject ObjCollided : delete object ObjCollided
endif
endif
collide2 = sc_SphereSlideGroup(2,oldx#,oldy#,oldz#,x#,oldy#,z#,radius#,0)
if collide2 > 0
rem if hit, reposition player, halt movement vector
x# = sc_getCollisionSlideX()
oldy# = sc_getCollisionSlideY()
z# = sc_getCollisionSlideZ()
vx# = 0
vz# = 0
rem possible code for giving the player a jumping help up stairs...
rem might be useful if slope# is set very high but stairs are still required
`dy# = oldy#-sc_getStaticCollisionY()
`if dy#<slope# and dy#>0 and ground=1 then vy# = 0.5
endif
rem check collision w/lava
collide3 = sc_SphereSlideGroup(3,oldx#,oldy#,oldz#,x#,oldy#,z#,radius#,0)
` endif
rem position the player
position object player,x#,oldy#,z#
sc_updateObject player
endfunction
` *********************************** Subroutines ************************************
`variables go here
InitVars:
CurrBullet = 0
Lives = 3
Score = 0
player = 1
PlayerDied = 0
GameOver = 0
Right = 90
Left = 270
Direction = Right
FOR i = 0 TO 6
bullet(i,4) = 0 : ` reset status to inactive
bullet(i,5) = 600 + i
NEXT i
FOR i = 0 TO 100
enemy(i,4) = 0 : ` status = inactive
enemy(i,5) = 400 + i : ` object # -- use objects 400 to 500 for enemies
NEXT i
BulletTimer = TIMER()
return
CollideDoors:
`------------------------------door collision-------------------------------
IF OBJECT COLLISION (player, 8)
`GOSUB PlayerDying
ENDIF
IF OBJECT COLLISION (player, 9)
GOSUB PlayerDying
ENDIF
IF OBJECT COLLISION (player, 10)
`GOSUB PlayerDying
ENDIF
IF OBJECT COLLISION (player, 11)
`GOSUB PlayerDying
ENDIF
IF OBJECT COLLISION (player, 12)
`GOSUB PlayerDying
ENDIF
IF OBJECT COLLISION (player, 13)
`GOSUB PlayerDying
ENDIF
IF OBJECT COLLISION (player, 14)
`GOSUB PlayerDying
ENDIF
`---------------------------------------------------------------------------
IF OBJECT hit (player, 16) ` if player touches switch, delete the door
POSITION OBJECT 9, 1150,150,0
INC Score, 1
ENDIF
Return
FireBullet:
bullet(CurrBullet,1) = OBJECT POSITION X(player)
bullet(CurrBullet,2) = OBJECT POSITION Y(player)
bullet(CurrBullet,3) = OBJECT POSITION Z(player)
bullet(CurrBullet,4) = 1 : ` status = active
bullet(CurrBullet,5) = 600 + CurrBullet : ` object #
x# = OBJECT POSITION X(player)
y# = OBJECT POSITION Y(player)
z# = OBJECT POSITION Z(player)
POSITION OBJECT bullet(CurrBullet,5),x#,y#,z#
SHOW OBJECT bullet(CurrBullet,5)
bullet(CurrBullet,6) = 8 : ` moving right
IF direction = left THEN bullet(CurrBullet,6) = -8 : ` moving left
INC CurrBullet : IF CurrBullet > 6 THEN CurrBullet = 0
BulletTimer = TIMER() + 200
RETURN
MoveBullets:
FOR k = 0 TO 6
IF bullet(k,4) = 1 : ` is it active?
bullet(k,1) = bullet(k,1) + bullet(k,6) : ` move it
IF OBJECT IN SCREEN(bullet(k,5)) = 1
` check for collision
collide = OBJECT COLLISION(bullet(k,5),0)
IF collide >= 1000
` collision with the world
HIDE OBJECT bullet(k,5)
bullet(k,4) = 0 : ` status = inactive
ENDIF
` check collision with enemies
IF collide >= 400 AND collide <= (400 + TotalEnemies)
IF enemy(collide - 400,4) = 1 : ` is it still active?
` yes, got an enemy!
enemy(collide - 400,4) = 0 : ` status = inactive
HIDE OBJECT enemy(collide - 400,5)
` hide the bullet and change it's status
HIDE OBJECT bullet(k,5)
bullet(k,4) = 0 : ` status = inactive
Score = Score+1
ELSE
` enemy has already been destroyed - move the bullet
POSITION OBJECT bullet(k,5),bullet(k,1),bullet(k,2),bullet(k,3)
ENDIF
ENDIF
IF collide = player OR collide = 0 OR (collide >= 600 AND collide <= 606)
` re-position the bullet
POSITION OBJECT bullet(k,5),bullet(k,1),bullet(k,2),bullet(k,3)
ENDIF
ELSE
` bullet off screen - hide it
HIDE OBJECT bullet(k,5)
bullet(k,4) = 0 : ` status = inactive
ENDIF
ENDIF
NEXT k
RETURN
MoveEnemies:
FOR t = 0 TO TotalEnemies
IF Enemy(t,4) = 1 : ` is it still alive?
Enemy(t,1) = Enemy(t,1) + Enemy(t,8)
IF Enemy(t,1) < Enemy(t,6) OR Enemy(t,1) > Enemy(t,7) THEN Enemy(t,8) = Enemy(t,8) * -1 : `reverse direction
POSITION OBJECT Enemy(t,5),Enemy(t,1),Enemy(t,2),0.0
ENDIF
NEXT t
RETURN
MakeObjects:
rem Create a player object
make object sphere player,25,40,25
sc_setupObject player,0,1
color object player,rgb(0,0,255)
position object player,300,100,0
` make bullets
FOR k = 600 TO 606
MAKE OBJECT SPHERE k,3
COLOR OBJECT k,RGB(255,0,0) : ` make them red
MAKE OBJECT COLLISION BOX k,-1.5,-1.5,-1.5,1.5,1.5,1.5,1
HIDE OBJECT k
NEXT k
`------------------------------switches----------------------------------
MAKE OBJECT SPHERE 5, 20, 20, 20 `1st switch
SET OBJECT COLLISION ON 5
SET OBJECT COLLISION TO SPHERES 5
COLOR OBJECT 5, RGB (255,255,255)
POSITION OBJECT 5,400,250,0
MAKE OBJECT SPHERE 16, 20, 20, 20 `2nd switch
SET OBJECT COLLISION ON 16
SET OBJECT COLLISION TO SPHERES 16
COLOR OBJECT 16, RGB (255,255,255)
POSITION OBJECT 16,1000,100,0
MAKE OBJECT SPHERE 17, 20, 20, 20 `3rd switch
SET OBJECT COLLISION ON 17
SET OBJECT COLLISION TO SPHERES 17
COLOR OBJECT 17, RGB (255,255,255)
POSITION OBJECT 17,2100,550,0
MAKE OBJECT SPHERE 18, 20, 20, 20 `4th switch
SET OBJECT COLLISION ON 18
SET OBJECT COLLISION TO SPHERES 18
COLOR OBJECT 18, RGB (255,255,255)
POSITION OBJECT 18,2900,450,0
MAKE OBJECT SPHERE 19, 20, 20, 20 `5th switch
SET OBJECT COLLISION ON 19
SET OBJECT COLLISION TO SPHERES 19
COLOR OBJECT 19, RGB (255,255,255)
POSITION OBJECT 19,3750,500,0
MAKE OBJECT SPHERE 20, 20, 20, 20 `6th switch
SET OBJECT COLLISION ON 20
SET OBJECT COLLISION TO SPHERES 20
COLOR OBJECT 20, RGB (255,255,255)
POSITION OBJECT 20,3850,450,0
MAKE OBJECT SPHERE 21, 20, 20, 20 `7th switch
SET OBJECT COLLISION ON 21
SET OBJECT COLLISION TO SPHERES 21
COLOR OBJECT 21, RGB (255,255,255)
POSITION OBJECT 21,5400,450,0
`-------------------------------doors------------------------------------
MAKE OBJECT BOX 8, 50, 50, 50 `1st door
sc_setupobject 8,3,2
SET OBJECT COLLISION ON 8
SET OBJECT COLLISION TO BOXES 8
COLOR OBJECT 8, RGB (255,0,0)
POSITION OBJECT 8,400,100,0
MAKE OBJECT BOX 9, 50, 50, 50 `2nd door
SET OBJECT COLLISION ON 9
SET OBJECT COLLISION TO BOXES 9
COLOR OBJECT 9, RGB (255,0,0)
POSITION OBJECT 9,1100,150,0
MAKE OBJECT BOX 10, 50, 50, 50 `3rd door
SET OBJECT COLLISION ON 10
SET OBJECT COLLISION TO BOXES 10
COLOR OBJECT 10, RGB (255,0,0)
POSITION OBJECT 10,2100,250,0
MAKE OBJECT BOX 11, 50, 50, 50 `4th door
SET OBJECT COLLISION ON 11
SET OBJECT COLLISION TO BOXES 11
COLOR OBJECT 11, RGB (255,0,0)
POSITION OBJECT 11,2800,200,0
MAKE OBJECT BOX 12, 50, 50, 50 `5th door
SET OBJECT COLLISION ON 12
SET OBJECT COLLISION TO BOXES 12
COLOR OBJECT 12, RGB (255,0,0)
POSITION OBJECT 12,3650,200,0
MAKE OBJECT BOX 13, 50, 50, 50 `6th door
SET OBJECT COLLISION ON 13
SET OBJECT COLLISION TO BOXES 13
COLOR OBJECT 13, RGB (255,0,0)
POSITION OBJECT 13,4600,350,0
MAKE OBJECT BOX 14, 50, 50, 50 `7th door
SET OBJECT COLLISION ON 14
SET OBJECT COLLISION TO BOXES 14
COLOR OBJECT 14, RGB (255,0,0)
POSITION OBJECT 14,5800,200,0
MAKE OBJECT BOX 15, 50, 50, 50 `ENDGAME door
SET OBJECT COLLISION ON 15
SET OBJECT COLLISION TO BOXES 15
COLOR OBJECT 15, RGB (255,0,0)
POSITION OBJECT 15,6650,350,0
`-------------------------------------------------------
return
PlayerDying:
ink rgb(0,220,0),0
time = timer() + 1200
repeat
center text ScrWid / 2,ScrHgt /2,"Player Died"
sync
UNTIL timer() > time
dec lives
if lives > 0
rem reset player's position to the original place
position object player,300,100,0
PlayerDied = 0
endif
return
Debug:
ink rgb(0,0,255),0
text 10,10,"SCORE:" + str$(Score) + " LIVES:" + str$(lives)
text 10,30,"FPS: " + str$(screen fps())
text 10,100,"collide = " + str$(collide)
text 10,120,"collide2 = " + str$(collide2)
text 10,140,"collideGroup = " + str$(collideGroup)
text 10,160,"jumptimer = " + str$(jumptimer)
text 10,180,"ground = " + str$(ground)
return
SetupEnemies:
FOR t = 0 TO TotalEnemies
` look for blocks below to set left / right paths
x = Enemy(t,9) : y = enemy(t,10) : tempx = x : tempy = y
IF y > 1 AND y < 12 AND x > 1 AND x < 134 : ` make sure we don't go out of bounds
okay = 0
REPEAT
DEC tempx
IF TLA(tempx,tempy) = 1
okay = 1
ENDIF
UNTIL okay = 1
MaxLeft = tempx + 1 : ` see how far left we can go before we hit a block
tempx = x
okay = 0
REPEAT
INC tempx
IF TLA(tempx,tempy) = 1
okay = 1
ENDIF
UNTIL okay = 1
MaxRight = tempx - 1 : ` furthest right w/o hitting a block
`now we will check underneath to make sure there is a platform to walk on
tempx = x
DEC tempy
okay = 0
REPEAT
DEC tempx
IF TLA(tempx,tempy) = 0
okay = 1
ENDIF
UNTIL okay = 1
xtu = MaxLeft : IF (tempx + 1) > MaxLeft THEN xtu = (tempx + 1)
Enemy(t,6) = (xtu * 50) : ` furthest left it can go left
tempx = x
okay = 0
REPEAT
INC tempx
IF TLA(tempx,tempy) = 0
okay = 1
ENDIF
UNTIL okay = 1
xtu = MaxRight : IF (tempx - 1) < MaxRight THEN xtu = (tempx - 1)
Enemy(t,7) = (xtu * 50) : ` max right
ENDIF
` set random speed
Enemy(t,8) = RND(3) + 1 : ` random amount - moving right
IF RND(100) > 50 THEN Enemy(t,8) = Enemy(t,8) * -1 : ` randomly start moving left
NEXT t
RETURN
CreateLevel:
rem Create a level
LevelObject = 1000 : EnemyObj = 400 : NumReads = 0
`for y=134 to 1 step -1
for y = 12 to 1 step -1
for x = 1 to 134
read TestLevel1Data
TLA(x,y) = TestLevel1Data
if TestLevel1Data=1 : ` main blocks which player can stand upon
make object cube LevelObject,50
position object LevelObject,x*50,y*50,0
color object LevelObject,rgb(0,0,0)
sc_setupobject LevelObject,2,2
endif
IF TestLevel1Data = 3 ` if you want to put in any safe other than black coloured blocks in
make object cube LevelObject,50
position object LevelObject,x*50,y*50,0
color object LevelObject,rgb(128,128,128)
sc_setupobject LevelObject,2,2
ENDIF
if TestLevel1Data = 4 `coins/pickups
make object sphere LevelObject,10,10,10
position object LevelObject,x * 50,y * 50,0
color object LevelObject,rgb(255,255,0)
sc_setupobject LevelObject,1,1
endif
if TestLevel1Data = 5 : ` lava
make object cube LevelObject,50
color object LevelObject, rgb (255,0,0)
position object LevelObject,x * 50,y * 50,0
sc_setupobject LevelObject,3,2
endif
if object exist(LevelObject)
inc LevelObject
endif
IF TestLevel1Data = 2
IF OBJECT EXIST(EnemyObj) = 1 THEN DELETE OBJECT EnemyObj `enemies
MAKE OBJECT SPHERE EnemyObj,15
COLOR OBJECT EnemyObj,RGB(139,69,19)
SET OBJECT AMBIENCE EnemyObj,RGB(0,255,0)
sc_setupobject EnemyObj,2,2
MAKE OBJECT COLLISION BOX EnemyObj,-20.0,-20.0,-20.0,20.0,20.0,20.0,0
Enemy(EnemyObj - 400,1) = x * 50 : Enemy(EnemyObj - 400,2) = y * 50
POSITION OBJECT EnemyObj,Enemy(EnemyObj - 400,1),Enemy(EnemyObj - 400,2),0
Enemy(EnemyObj - 400,4) = 1 : ` status = active
Enemy(EnemyObj - 400,9) = x : Enemy(EnemyObj - 400,10) = y : ` store map locations
INC EnemyObj,1
ENDIF
next x
next y
TotalEnemies = EnemyObj - 400
return
TestLevel1Data:
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,1,5,1,5,1,5,1,5,1,1,5,1,5,1,5,5,5,5,5,5,5,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,1,5,1,1,5,1,5,1,1,5,1,5,1,1,1,1,1,1,1,1,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,5,0,5,0,5,0,5,0,5,0,0,1,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,0,1,5,5,0,1,0,1,5,5,0,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,1
DATA 1,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,1,5,1,5,1,5,1,5,1,5,1,1,5,1,5,1,0,0,5,0,5,0,0,0,0,1,0,0,0,5,5,5,5,0,0,0,0,0,1,5,0,5,1,0,5,0,5,0,5,0,5,0,5,0,0,1,5,0,5,0,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,0,5,1,5,0,5,0,0,0,0,5,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,1
DATA 1,0,0,0,0,5,1,5,1,5,0,0,0,0,0,0,0,5,1,5,1,5,1,1,1,1,1,1,1,5,1,5,1,0,0,0,0,0,0,0,1,1,1,5,5,5,5,0,0,0,0,0,0,0,0,1,5,0,5,1,0,5,0,5,0,5,0,5,0,5,0,0,1,0,0,5,1,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,1,5,1,5,0,5,5,1,0,1,5,1,0,5,0,0,0,0,0,5,1,5,1,5,1,5,1,5,1,1
DATA 1,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,1,5,1,5,1,5,0,0,0,0,0,1,5,1,5,1,0,5,0,5,0,5,0,1,0,1,5,0,0,0,0,5,5,0,0,0,0,0,1,5,0,5,1,0,5,0,5,0,5,0,5,0,5,0,0,1,0,5,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,5,0,1,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,5,1,5,1,5,1,0,0,0,0,0,1,5,1,5,1,0,0,0,0,0,2,0,0,0,1,0,0,5,5,5,5,0,0,0,0,0,0,0,1,0,1,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,1,0,1,5,1,0,1,0,0,0,0,0,0,0,0,0,1,1,5,1,5,1,5,1,5,1,1,0,0,0,0,0,1,5,1,5,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
DATA 1,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,0,5,5,0,0,0,0,0,0,2,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,5,5,5,5,5,5,5,5,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1
DATA 1,0,0,0,0,0,5,5,5,0,0,0,0,4,0,3,0,0,0,4,2,0,1,0,5,5,5,0,0,0,2,0,0,1,1,1,1,5,5,5,1,0,1,0,5,0,0,0,0,1,1,5,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,5,5,5,5,5,5,5,5,5,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,5,5,5,1,5,5,5,1,5,5,5,1,1,1,1,1
DATA 1,0,0,0,0,0,1,1,1,0,0,0,0,1,5,1,0,0,1,1,1,0,5,4,0,0,2,0,1,5,1,5,1,1,1,1,1,5,1,5,1,0,1,1,1,0,0,1,1,1,5,5,5,1,0,0,1,0,1,1,1,1,1,0,0,1,1,1,1,5,5,1,1,0,1,0,1,5,1,0,5,1,1,1,1,0,0,1,1,1,1,5,5,5,5,5,5,5,5,5,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1
DATA 1,0,0,0,0,0,0,7,0,0,2,0,1,1,5,1,1,0,0,0,1,0,4,0,1,1,1,1,1,5,1,5,1,1,1,1,1,5,5,5,1,0,0,0,2,0,1,1,5,5,5,5,5,1,0,0,0,0,0,2,0,0,0,0,1,1,5,5,5,5,5,5,1,0,0,0,0,2,0,0,0,0,2,0,0,0,1,1,1,1,1,5,5,5,5,5,5,5,5,5,1,1,1,1,1,0,0,2,0,0,0,0,2,0,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
And also, Im new to sparkys, so how do i set up collision for the second player, exactly like the first player?
Many rewards will be thrust upon anyone willing to help!
Hey look at that!