- Learn
- Build a Game
- Shatterfield
- Appendices
- A Logic Reference
Appendix A — Logic Reference
Every Logic Component and Function in Shatterfield, as it is in the finished game. Each entry stands on its own: read what it does, see what it needs, and build it from its card into your own game. A card’s Shared Variables and Per Instance Variables are the values you can change. A Shared Variable holds one value for the whole Object, under Variables in its Properties. A Per Instance Variable holds one for each placement in the Scene.
A.1 Rotate-and-Thrust Controls
Comes whole from Myth’s templates. Built in Chapter 1, The Ship Flies.
Left and Right turn the Ship and Up thrusts it forward; it keeps its momentum, slowing by coastDrag, up to topSpeed.
Any ObjectA.2 Thrust Feedback
Built in Chapter 1, The Ship Flies.
While Up is held the Ship shows its thrust flame and the thrust sound loops.
Any Object- Clip
"Ship Sprite/Thrust"
- Operation
Loop- Sound
"Thrust"
- Event
While Command Rotate and Thrust Controls Up Is Held- Mode
Thrusting
- Frame
0
- Operation
Stop- Sound
"Thrust"
- Event
While Command Rotate and Thrust Controls Up Is Held- Mode
Coasting
- Operation
Stop- Sound
"Thrust"
- Operation
Stop- Sound
"Thrust"
- Frame
0
- Event
While Command Rotate and Thrust Controls Up Is Held- Mode
Coasting
A.3 Wrap Around World
Comes whole from Myth’s templates. Built in Chapter 1, The Ship Flies.
An Object that leaves the screen comes back at the opposite edge, drawn across the edge while it passes.
Any ObjectA.4 Motion Facing
Comes whole from Myth’s templates. Built in Chapter 2, Shots.
The Object turns to point the way it is moving.
Any ObjectA.5 Ship Gun
Built in Chapter 2, Shots.
Fire launches a Shot from the Ship's nose, with a cooldown and a limit on Shots in flight.
Any Object- Action Name
isGunReady- Cooldown Key
fireCooldown
- Action Name
hasRoomForShot- Object
@self.shot- Operator
<- Value
@self.maxShots
isGunReady.value == true && hasRoomForShot.value == true- Object to Create
@self.shot- Position Relative To
Self- Y
@self.muzzleDistance- Launch Speed
@self.shotSpeed- Launch Angle
90- Angle Relative To
Creator- Created As
newShot
- Sound
"Fire"
- Cooldown Key
fireCooldown- Seconds
@self.fireCooldownSeconds
A.6 Shot Lifetime
Built in Chapter 2, Shots.
A Shot disappears lifeSeconds after it is fired.
Any Object- Timer Name
shotLife- Repeat Every (s)
@self.lifeSeconds- Ring Once
Yes
A.7 Random Teleport
Comes whole from Myth’s templates. Built in Chapter 3, Hyperspace.
Moves the Ship to a random place in the play area whenever it hears randomTeleport.
Any ObjectA.8 Ship Hyperspace
Built in Chapter 3, Hyperspace.
Hyperspace jumps the Ship to a random place on screen and stops it, at most once every cooldownSeconds.
Any Object- Action Name
isHyperspaceReady- Cooldown Key
hyperspaceCooldown
isHyperspaceReady.value == true- Particles
"Impact Sparks"- Count
@self.sparkCount
- Sound
"Hyper"
- Custom Event
randomTeleport
- X Velocity
0- Y Velocity
0
- Particles
"Impact Sparks"- Count
@self.sparkCount
- Cooldown Key
hyperspaceCooldown- Seconds
@self.cooldownSeconds
A.9 Asteroid Drift
Built in Chapter 4, Asteroids.
A new Asteroid starts on a random tumble pose and turn, spins, and drifts in a random direction.
Any Object- Name
waveSpeedUp- Value
1
- Name
speedUpWave- Value
1
- Action Name
poseNumber- Maximum
7
- Frame
poseNumber.value * 4
- Action Name
turnDegrees- Maximum
359
- Degrees
turnDegrees.value
- Action Name
spinSpeed- Minimum
-@self.maxSpin- Maximum
@self.maxSpin
- Spin
spinSpeed.value
- Action Name
headingDegrees- Maximum
359
- Direction
headingDegrees.value
- Action Name
driftSpeed- Minimum
@self.minSpeed- Maximum
@self.maxSpeed
- Variable
speedUpWave- Value
@self.wave
@self.wave > @self.speedUpLastWave- Variable
speedUpWave- Value
@self.speedUpLastWave
- Variable
waveSpeedUp- Value
1 + @self.speedUpPerWave * (speedUpWave - 1)
- Speed
driftSpeed.value * waveSpeedUp
A.10 Break Apart
Built in Chapter 4, Asteroids.
An Asteroid hit by the player scores and shows its points; any Asteroid that breaks up bursts into sparks, plays its break sound, leaves its fragments and is destroyed.
Any Object- Action Name
isPlaying- Game State
Playing
isPlaying.value == true- Variable
$score- Operator
+=- Value
@self.points
- Custom Event
scored
- Text
text(@self.points)- Color
@self.popupColor- Size
@self.popupSize- Rise
@self.popupRise- Seconds
@self.popupSeconds
- Custom Event
breakUp
- Particles
"Impact Sparks"- Count
@self.sparkCount
- Sound
@self.breakSound
@self.shake > 0- Intensity
@self.shake- Seconds
@self.shakeSeconds
@self.fragmentstimes- Object to Create
@self.fragment- Position Relative To
Self- Created As
newFragment
A.11 Shot Impact
Built in Chapter 4, Asteroids.
A Shot that touches an Asteroid tells the Asteroid it was hit and disappears.
Any Object- Applies To
other- Custom Event
hit
A.12 Life Icon
Built in Chapter 5, Crash and Lives.
This reserve-ship icon shows while the player has at least slot lives.
Any Object- icon
self- slot
@self.slot
- icon
self- slot
@self.slot
A.13 Lives and Respawn
Built in Chapter 5, Crash and Lives.
The game starts with startLives; each lost Ship costs one, and a new Ship comes after respawnSeconds while lives are left.
Any Object- Variable
$lives- Value
@self.startLives
- Custom Event
spawnShip
- Variable
$lives- Operator
-=- Value
1
$lives > 0- Timer Name
respawnDelay- Repeat Every (s)
@self.respawnSeconds- Ring Once
Yes
- Game State
Game Over
- Custom Event
spawnShip
- Object to Create
@self.ship- X
$areaWidth / 2- Y
$areaHeight / 2- Created As
newShip
- Sound
"Ship Respawn"
A.14 Ship Crash
Built in Chapter 5, Crash and Lives.
Touching an Asteroid, a saucer or a saucer shot destroys the Ship: it tells what it touched that it was hit, explodes, and reports shipDestroyed. While the Ship is shielded, a touch does nothing and nothing can push it.
Any ObjectCollider- Applies To
other- Custom Event
hit
- Particles
"Ship Explosion"- Count
@self.explosionCount
- Particles
"Impact Sparks"- Count
@self.crashSparkCount
- Sound
"ExplosionLarge"
- Sound
"Ship Lost"
- Intensity
@self.shake- Seconds
@self.shakeSeconds
- Custom Event
shipDestroyed
- Event
While Hitting Anything- Mode
Shielded
- Component Value
self.collider- Value
true- Property
trigger
- Component Value
self.collider- Value
false- Property
trigger
- Event
While Hitting Anything- Mode
Exposed
A.15 Ship Shield
Built in Chapter 5, Crash and Lives.
A new Ship is shielded for shieldSeconds: it cannot crash, and it blinks.
Any Objectself.shipShieldData- Custom Event
shieldUp
- Timer Name
shieldBlink- Repeat Every (s)
@self.blinkSeconds
- Timer Name
shieldTime- Repeat Every (s)
@self.shieldSeconds- Ring Once
Yes
self.shipShieldData.isFaded == true- Component Value
self.shipShieldData.isFaded- Value
false
- Alpha
@self.fadedAlpha
- Component Value
self.shipShieldData.isFaded- Value
true
- Timer Name
shieldBlink
- Custom Event
shieldDown
A.16 Show Life Icon (Function)
Built in Chapter 5, Crash and Lives.
Shows the icon while the player has at least slot lives, and hides it otherwise.
$lives >= slot- Applies To
icon- Visible
true
- Applies To
icon- Visible
false
A.17 Asteroid Material
Built in Chapter 6, Waves.
A new Asteroid uses the sprite of the current wave's material, from the Asteroid Materials Data Table.
Any Object- Name
materialRow- Value
0
- Variable
materialRow- Value
(@self.wave - 1) % dataCount("Asteroid Materials")
- Sprite
data("Asteroid Materials", materialRow, "sprite")
A.18 Create Asteroids Along Edges (Function)
Built in Chapter 6, Waves.
Creates perBand Asteroids in bands along the top and bottom edges and as many along the left and right edges.
perBandtimes- Action Name
acrossX- Maximum
$areaWidth
- Action Name
depthIntoEdgeBand- Maximum
edgeBand
- Action Name
edgeRoll- Maximum
1
edgeRoll.value == 0- Applies To
creator- Object to Create
asteroid- X
acrossX.value- Y
depthIntoEdgeBand.value- Created As
bottomAsteroid
- Applies To
creator- Object to Create
asteroid- X
acrossX.value- Y
$areaHeight - depthIntoEdgeBand.value- Created As
topAsteroid
perBandtimes- Action Name
upY- Maximum
$areaHeight
- Action Name
depthIntoSideBand- Maximum
sideBand
- Action Name
sideRoll- Maximum
1
sideRoll.value == 0- Applies To
creator- Object to Create
asteroid- X
depthIntoSideBand.value- Y
upY.value- Created As
leftAsteroid
- Applies To
creator- Object to Create
asteroid- X
$areaWidth - depthIntoSideBand.value- Y
upY.value- Created As
rightAsteroid
A.19 Waves
Built in Chapter 6, Waves.
Each wave announces itself with the banner, then brings its Large Asteroids; clearing every Asteroid starts the sector jump and then the next wave.
Any Object- Variable
$wave- Value
0
- Custom Event
nextWave
- Variable
$wave- Operator
+=- Value
1
- Applies To
@self.banner- Visible
Yes
- Timer Name
bannerTime- Repeat Every (s)
@self.bannerSeconds- Ring Once
Yes
- Name
perBandThisWave- Value
1
- Applies To
@self.banner- Visible
No
- Variable
perBandThisWave- Value
$wave + 1
perBandThisWave > @self.maxAsteroidsPerBand- Variable
perBandThisWave- Value
@self.maxAsteroidsPerBand
- creator
self- asteroid
@self.asteroid- perBand
perBandThisWave- edgeBand
@self.edgeBand- sideBand
@self.sideBand
- Custom Event
waveStarted
- Sound
"Sector Clear"
- Sound
"Hyper"
- Timer Name
sectorJump- Repeat Every (s)
@self.jumpSeconds- Ring Once
Yes
- Custom Event
waveCleared
- Custom Event
nextWave
- Timer Name
bannerTime
- Timer Name
sectorJump
- Applies To
@self.banner- Visible
No
A.20 Extra Ships
Built in Chapter 7, Score.
Each time the score passes another extraShipEvery points, the player gains a life, with a sound and an "EXTRA SHIP" popup.
Any Objectself.extraShipsData- Component Value
self.extraShipsData.nextExtraShipAt- Value
@self.extraShipEvery
$score >= self.extraShipsData.nextExtraShipAt- Variable
$lives- Operator
+=- Value
1
- Component Value
self.extraShipsData.nextExtraShipAt- Operator
+=- Value
@self.extraShipEvery
- Sound
"ExtraLife"
- Text
EXTRA SHIP- Color
@self.popupColor- Size
@self.popupSize- Rise
@self.popupRise- Seconds
@self.popupSeconds- Position Relative To
World- X
$areaWidth / 2- Y
$areaHeight / 2 + @self.popupAboveCenter
A.21 Score
Built in Chapter 7, Score.
The score starts at 0 each game; the high score follows it whenever the score passes it.
Any Object- Action Name
savedHighScore- Key
"highScore"- Default
0
savedHighScore.value > $highScore- Variable
$highScore- Value
savedHighScore.value
- Action Name
isPlaying- Game State
Playing
isPlaying.value == true- Variable
$score- Value
0
- Action Name
isGameOver- Game State
Game Over
isGameOver.value == true- Action Name
persistentWriteResult- Key
"highScore"- Value
$highScore
$score > $highScore- Variable
$highScore- Value
$score
A.22 Saucer Explodes
Built in Chapter 8, Saucers.
A saucer that is hit gives the player its points, shows them, explodes and is destroyed.
Any Object- Action Name
isPlaying- Game State
Playing
isPlaying.value == true- Variable
$score- Operator
+=- Value
@self.points
- Custom Event
scored
- Text
text(@self.points)- Color
@self.popupColor- Size
@self.popupSize- Rise
@self.popupRise- Seconds
@self.popupSeconds
- Particles
"Ship Explosion"- Count
@self.explosionCount
- Sound
"ExplosionLarge"
- Intensity
@self.shake- Seconds
@self.shakeSeconds
A.23 Saucer Flight
Built in Chapter 8, Saucers.
A saucer enters beyond a random side at a random height, crosses at its speed while weaving up and down, and leaves at the far side.
Any Objectself.saucerFlightData- Action Name
sideRoll- Maximum
1
sideRoll.value == 0- Component Value
self.saucerFlightData.direction- Value
1
- Component Value
self.saucerFlightData.startX- Value
-@self.margin
- Component Value
self.saucerFlightData.direction- Value
-1
- Component Value
self.saucerFlightData.startX- Value
$areaWidth + @self.margin
- Action Name
depthBelowTop- Minimum
@self.minDepth- Maximum
@self.maxDepth
- X
self.saucerFlightData.startX- Y
$areaHeight - depthBelowTop.value
- X Velocity
self.saucerFlightData.direction * @self.speed- Y Velocity
0
- Operation
Loop- Sound
"Saucer Siren"
- Timer Name
nextWeave- Repeat Every (s)
@self.firstWeaveSeconds- Ring Once
Yes
- Timer Name
crossing- Repeat Every (s)
($areaWidth + 2 * @self.margin) / @self.speed- Ring Once
Yes
- Action Name
weaveRoll- Minimum
-1- Maximum
1
- Y Velocity
weaveRoll.value * @self.weaveSpeed
- Action Name
weaveSeconds- Minimum
@self.weaveMinSeconds- Maximum
@self.weaveMaxSeconds
- Timer Name
nextWeave- Repeat Every (s)
weaveSeconds.value- Ring Once
Yes
self.transform.position.y > $areaHeight- X
self.transform.position.x- Y
self.transform.position.y - $areaHeight
self.transform.position.y < 0- X
self.transform.position.x- Y
self.transform.position.y + $areaHeight
- Operation
Stop- Sound
"Saucer Siren"
- Operation
Stop- Sound
"Saucer Siren"
- Operation
Loop- Sound
"Saucer Siren"
- Operation
Stop- Sound
"Saucer Siren"
A.24 Saucer Gun
Built in Chapter 8, Saucers.
A saucer fires its own shot every fireEvery seconds, with the pulse sound.
Any Object- Timer Name
saucerFire- Repeat Every (s)
@self.fireEvery
- Object to Create
@self.shot- Position Relative To
Self- Created As
newShot
- Sound
"Saucer Pulse"
- Timer Name
saucerFire
A.25 Saucer Shot Flight
Built in Chapter 8, Saucers.
A saucer shot flies in a random direction, or at the Ship if it is aimed, and is gone after lifeSeconds or when it touches something.
Any Object- Action Name
shotHeading- Maximum
359
- Degrees
shotHeading.value
@self.aimed == true- Action Name
isShipThere- Object
@self.ship- Operator
>- Value
0
isShipThere.value == true- Action Name
aimOffset- Minimum
-@self.aimSpread- Maximum
@self.aimSpread
- Target Object
@self.ship- Rotation Offset
aimOffset.value
- Direction
self.transform.rotation.z
- Speed
@self.speed
- Timer Name
shotLife- Repeat Every (s)
@self.lifeSeconds- Ring Once
Yes
- Applies To
other- Custom Event
breakUp
A.26 Saucer Spawner
Built in Chapter 8, Saucers.
The first saucer comes firstSeconds into the game. After that, a saucer check comes a random number of seconds later (fewer in later waves) and sends a saucer when none is flying; the Small one comes more often in later waves and always at high scores.
Any Object- Timer Name
saucerCheck- Repeat Every (s)
@self.firstSeconds- Ring Once
Yes
- Name
gapMax- Value
0
- Name
gapMin- Value
0
- Action Name
isSaucerFlying- Object
tag:Saucer- Operator
>- Value
0
isSaucerFlying.value == false- Action Name
saucerRoll
$score >= @self.smallAlwaysScore || saucerRoll.value < (@self.smallChance + @self.smallChancePerWave * $wave)- Object to Create
@self.smallSaucer- Created As
newSmallSaucer
- Object to Create
@self.largeSaucer- Created As
newLargeSaucer
- Variable
gapMin- Value
@self.gapMinStart - $wave
gapMin < @self.gapMinFloor- Variable
gapMin- Value
@self.gapMinFloor
- Variable
gapMax- Value
@self.gapMaxStart - $wave
gapMax < @self.gapMaxFloor- Variable
gapMax- Value
@self.gapMaxFloor
- Action Name
checkSeconds- Minimum
gapMin- Maximum
gapMax
- Timer Name
saucerCheck- Repeat Every (s)
checkSeconds.value- Ring Once
Yes
- Timer Name
saucerCheck
A.27 Blink
Built in Chapter 9, Screens.
This text blinks while its screen is up: it is shown and hidden in turn every blinkSeconds.
Any Objectself.blinkData- Component Value
self.blinkData.isShown- Value
true
- Visible
Yes
- Timer Name
blink- Repeat Every (s)
@self.blinkSeconds- First Delay (s)
@self.firstDelaySeconds
- Timer Name
blink
- Visible
No
self.blinkData.isShown == true- Visible
No
- Component Value
self.blinkData.isShown- Value
false
- Visible
Yes
- Component Value
self.blinkData.isShown- Value
true
A.28 Game Over Screen
Built in Chapter 9, Screens.
After the last Ship: GAME OVER and the final score; playAgainSeconds later, the offer to play again; returnSeconds after that, the title.
Any Object- Timer Name
playAgainDelay
- Timer Name
returnToTitle
- UI Group
gameOver- Visible
No
- Applies To
@self.playAgainPrompt- Custom Event
stopBlinking
- Action Name
isGameOver- Game State
Game Over
isGameOver.value == true- UI Group
gameOver
- Timer Name
playAgainDelay- Repeat Every (s)
@self.playAgainSeconds- Ring Once
Yes
- Action Name
isOfferingPlayAgain- Game State
Play Again
isOfferingPlayAgain.value == true- UI Group
gameOver
- Applies To
@self.playAgainPrompt- Custom Event
startBlinking
- Timer Name
returnToTitle- Repeat Every (s)
@self.returnSeconds- Ring Once
Yes
- Game State
Play Again
- Game State
Title
A.29 Leave When Cleared
Built in Chapter 9, Screens.
This Object leaves when space is cleared for a new game or the title screen.
Any ObjectA.31 Pause
Built in Chapter 9, Screens.
Pause (Esc or P) during play holds the game under the PAUSED menu and lets it go on when the menu reports gameResumed; a menu opened as the game ends is closed.
Any Object- Action Name
isPauseMenuOpen- Menu Element
"Paused"
isPauseMenuOpen.value == false- Custom Event
gamePaused
- Custom Event
showPausedMenu
- Custom Event
hideMenu
- Custom Event
hideMenu
A.32 Play Switch
Built in Chapter 9, Screens.
Switches the Logic that only makes sense during play on when a game starts, and off when it ends.
Any Object- Action Name
isPlaying- Game State
Playing
isPlaying.value == true- Logic Component
"Lives and Respawn"
- Logic Component
"Waves"
- Logic Component
"Extra Ships"
- Logic Component
"Saucer Spawner"
- Logic Component
"Pause"
- Logic Component
"Heartbeat"
- Logic Component
"Lives and Respawn"- State
Disable
- Logic Component
"Waves"- State
Disable
- Logic Component
"Extra Ships"- State
Disable
- Logic Component
"Saucer Spawner"- State
Disable
- Logic Component
"Pause"- State
Disable
- Logic Component
"Heartbeat"- State
Disable
- Custom Event
playStopped
A.33 Start Game
Built in Chapter 9, Screens.
Start (Enter or Space) on the title or after a game over clears space and starts a game.
Any Object- Action Name
isOnTitle- Game State
Title
- Action Name
isOfferingPlayAgain- Game State
Play Again
isOnTitle.value == true || isOfferingPlayAgain.value == true- Sound
"Start"
- Custom Event
clearField
- Game State
Playing
A.34 Title Screen
Built in Chapter 9, Screens.
The title screen: its words, its music, and six drifting Title Asteroids, whenever the game is on the title.
Any Object- Custom Event
showTitle
- Action Name
isOnTitle- Game State
Title
isOnTitle.value == true- Custom Event
showTitle
- UI Group
title- Visible
No
- Applies To
@self.prompt- Custom Event
stopBlinking
- Operation
Stop- Sound
"Space Theme"
- UI Group
hud
- Custom Event
clearField
- creator
self- asteroid
@self.titleAsteroid- perBand
@self.asteroidsPerBand- edgeBand
@self.edgeBand- sideBand
@self.sideBand
- UI Group
hud- Visible
No
- UI Group
title
- Applies To
@self.prompt- Custom Event
startBlinking
- Operation
Loop- Sound
"Space Theme"
A.35 Heartbeat
Built in Chapter 10, Heartbeat.
While a wave's Asteroids are out, a two-note heartbeat plays, starting startSeconds apart and speedUp times sooner each beat, down to fastestSeconds.
Any Objectself.heartbeatData- Component Value
self.heartbeatData.beatSeconds- Value
@self.startSeconds
- Timer Name
heartbeat- Repeat Every (s)
self.heartbeatData.beatSeconds- Ring Once
Yes
self.heartbeatData.nextNote == 1- Sound
"Beat1"
- Component Value
self.heartbeatData.nextNote- Value
2
- Sound
"Beat2"
- Component Value
self.heartbeatData.nextNote- Value
1
- Component Value
self.heartbeatData.beatSeconds- Operator
*=- Value
@self.speedUp
self.heartbeatData.beatSeconds < @self.fastestSeconds- Component Value
self.heartbeatData.beatSeconds- Value
@self.fastestSeconds
- Timer Name
heartbeat- Repeat Every (s)
self.heartbeatData.beatSeconds- Ring Once
Yes
- Timer Name
heartbeat
- Timer Name
heartbeat
A.36 Sky Parallax
Built in Chapter 11, Sky.
The sky drifts layer by layer, slides against the Ship's motion by each layer's depth, and surges forward during a sector jump.
Any Objectself.skyParallaxData- Action Name
isShipThere- Object
@self.ship- Operator
>- Value
0
isShipThere.value == true- Component Value
self.skyParallaxData.followVX- Value
@self.ship.transform.velocity.x
- Component Value
self.skyParallaxData.followVY- Value
@self.ship.transform.velocity.y
- Component Value
self.skyParallaxData.followVX- Value
0
- Component Value
self.skyParallaxData.followVY- Value
0
- Component Value
self.skyParallaxData.skyVX- Operator
+=- Value
(self.skyParallaxData.followVX - self.skyParallaxData.skyVX) * @self.followRate * $deltaTime
- Component Value
self.skyParallaxData.skyVY- Operator
+=- Value
(self.skyParallaxData.followVY - self.skyParallaxData.skyVY) * @self.followRate * $deltaTime
- Component Value
self.skyParallaxData.jump- Operator
+=- Value
(self.skyParallaxData.jumpTarget - self.skyParallaxData.jump) * @self.surgeRate * $deltaTime
dataCount("Sky Layers")times- Component Value
self.skyParallaxData.row- Value
local.index
- Component Value
self.skyParallaxData.driftX- Value
data("Sky Layers", self.skyParallaxData.row, "driftX")
- Component Value
self.skyParallaxData.driftY- Value
data("Sky Layers", self.skyParallaxData.row, "driftY")
- Component Value
self.skyParallaxData.depth- Value
data("Sky Layers", self.skyParallaxData.row, "depth")
- Component Value
self.skyParallaxData.surge- Value
data("Sky Layers", self.skyParallaxData.row, "surge")
- Background
data("Sky Layers", self.skyParallaxData.row, "background")- X Speed
self.skyParallaxData.driftX - self.skyParallaxData.skyVX * @self.pixelsPerMeter * self.skyParallaxData.depth - self.skyParallaxData.jump * self.skyParallaxData.surge- Y Speed
self.skyParallaxData.driftY - self.skyParallaxData.skyVY * @self.pixelsPerMeter * self.skyParallaxData.depth
- Component Value
self.skyParallaxData.jumpTarget- Value
1
- Component Value
self.skyParallaxData.jumpTarget- Value
0
- Component Value
self.skyParallaxData.jumpTarget- Value
0
