Skip to content

Instantly share code, notes, and snippets.

@YeOldeDM
Created June 7, 2017 23:42
Show Gist options
  • Save YeOldeDM/692e1f38f4cee2366800fe73cb54651e to your computer and use it in GitHub Desktop.
Save YeOldeDM/692e1f38f4cee2366800fe73cb54651e to your computer and use it in GitHub Desktop.
extends Node2D
var resolution = 256
var radius = 512
var force = 80
var force_falloff = 0.08
func explode():
var pos = get_global_pos()
var space = get_world_2d().get_direct_space_state()
for i in range( resolution ):
# get random vector at radius magnitude
var x = rand_range(-1, 1)
var y = rand_range(-1,1)
var blastv = Vector2(x,y).normalized() * radius
# cast ray along vector
var end = pos - blastv
var result = space.intersect_ray( pos, end)
# blast rigidbody colliders
if !result.empty():
var col = result.collider
if col extends RigidBody2D:
var dis = (pos - result.position).length()
var f = force / (dis * force_falloff)
var forcev = blastv.normalized() * f
col.apply_impulse( result.position, forcev )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment