Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. ### A snipped from the Rock Scene
  2. func spawn(_pos, _vel, _size):
  3.     position = _pos
  4.     size = _size
  5.     mass = 1.5 * size
  6.     $Explosion.scale = Vector2(0.75, 0.75) * size
  7.     $Sprite.scale = Vector2(1, 1) * scale_factor * _size
  8.     radius = int($Sprite.texture.get_size().x / 2 * scale_factor * _size)
  9.     var shape = CircleShape2D.new()
  10.     shape.radius = radius
  11.     $CollisionShape2D.shape = shape
  12.     linear_velocity = _vel
  13.     angular_velocity = rand_range(-1.5, 1.5)
  14.  
  15. ### A snipped from main
  16. func _ready():
  17.     randomize()
  18.     screensize = get_viewport().get_visible_rect().size
  19.     $Player.screensize = screensize
  20.     for i in range(3):
  21.         spawn_rock(3)
  22.  
  23.  
  24. func spawn_rock(_size, _pos=null, _vel=null):
  25.     if !_pos:
  26.         $RockPath/RockSpawn.set_offset(randi())
  27.         _pos = $RockPath/RockSpawn.position
  28.     if !_vel:
  29.         _vel = Vector2(1, 0).rotated(rand_range(0, 2*PI)) * rand_range(100, 150)
  30.     var r = rock.instance()
  31.     r.screensize = screensize
  32.     r.spawn(_pos, _vel, _size)
  33.     r.connect("exploded", self, "_on_Rock_exploded")
  34.     $Rocks.add_child(r)
  35.  
  36.  
  37. func _on_Rock_exploded(_size, _radius, _pos, _vel):
  38.     if _size <= 1:
  39.         return
  40.     for offset in [-1, 1]:
  41.         var _dir = (_pos - $Player.position).normalized().tangent() * offset
  42.         var newpos = _pos + _dir * _radius
  43.         var newvel = _dir * _vel.length() * 1.1
  44.         spawn_rock(_size - 1, newpos, newvel)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement