Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### A snipped from the Rock Scene
- func spawn(_pos, _vel, _size):
- position = _pos
- size = _size
- mass = 1.5 * size
- $Explosion.scale = Vector2(0.75, 0.75) * size
- $Sprite.scale = Vector2(1, 1) * scale_factor * _size
- radius = int($Sprite.texture.get_size().x / 2 * scale_factor * _size)
- var shape = CircleShape2D.new()
- shape.radius = radius
- $CollisionShape2D.shape = shape
- linear_velocity = _vel
- angular_velocity = rand_range(-1.5, 1.5)
- ### A snipped from main
- func _ready():
- randomize()
- screensize = get_viewport().get_visible_rect().size
- $Player.screensize = screensize
- for i in range(3):
- spawn_rock(3)
- func spawn_rock(_size, _pos=null, _vel=null):
- if !_pos:
- $RockPath/RockSpawn.set_offset(randi())
- _pos = $RockPath/RockSpawn.position
- if !_vel:
- _vel = Vector2(1, 0).rotated(rand_range(0, 2*PI)) * rand_range(100, 150)
- var r = rock.instance()
- r.screensize = screensize
- r.spawn(_pos, _vel, _size)
- r.connect("exploded", self, "_on_Rock_exploded")
- $Rocks.add_child(r)
- func _on_Rock_exploded(_size, _radius, _pos, _vel):
- if _size <= 1:
- return
- for offset in [-1, 1]:
- var _dir = (_pos - $Player.position).normalized().tangent() * offset
- var newpos = _pos + _dir * _radius
- var newvel = _dir * _vel.length() * 1.1
- spawn_rock(_size - 1, newpos, newvel)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement