add noise shader to laser graphics
This commit is contained in:
parent
90cc0f0550
commit
5a9751946c
3 changed files with 51 additions and 2 deletions
|
@ -6,6 +6,7 @@ export var laser_time = 0.5
|
||||||
onready var line = $Laser
|
onready var line = $Laser
|
||||||
onready var cast = $RayCast2D
|
onready var cast = $RayCast2D
|
||||||
onready var timer = $Timer
|
onready var timer = $Timer
|
||||||
|
onready var sparks = $SparkParticles
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
_disable_laser()
|
_disable_laser()
|
||||||
|
@ -14,11 +15,15 @@ func _physics_process(delta):
|
||||||
if cast.is_colliding():
|
if cast.is_colliding():
|
||||||
line.points[1].y = line.to_local(cast.get_collision_point()).y
|
line.points[1].y = line.to_local(cast.get_collision_point()).y
|
||||||
line.visible = true
|
line.visible = true
|
||||||
|
sparks.global_position.y = cast.get_collision_point().y
|
||||||
|
sparks.emitting = true
|
||||||
|
|
||||||
var collider = cast.get_collider()
|
var collider = cast.get_collider()
|
||||||
if collider.is_in_group("player"):
|
if collider.is_in_group("player"):
|
||||||
collider.get_parent().die()
|
collider.get_parent().die()
|
||||||
else:
|
else:
|
||||||
line.visible = false
|
line.visible = false
|
||||||
|
sparks.emitting = false
|
||||||
|
|
||||||
func _enable_laser():
|
func _enable_laser():
|
||||||
cast.enabled = true
|
cast.enabled = true
|
||||||
|
|
|
@ -1,11 +1,22 @@
|
||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://graphics/enemy/laser_wall.png" type="Texture" id=1]
|
[ext_resource path="res://graphics/enemy/laser_wall.png" type="Texture" id=1]
|
||||||
[ext_resource path="res://objects/enemy/laser_wall.gd" type="Script" id=2]
|
[ext_resource path="res://objects/enemy/laser_wall.gd" type="Script" id=2]
|
||||||
|
[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=3]
|
||||||
|
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4]
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=1]
|
||||||
|
shader = ExtResource( 3 )
|
||||||
|
shader_param/animate_noise = true
|
||||||
|
shader_param/noise_intensity = 0.5
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id=2]
|
||||||
|
_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ]
|
||||||
|
|
||||||
[node name="LaserWall" type="Node2D"]
|
[node name="LaserWall" type="Node2D"]
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
blood = false
|
blood = false
|
||||||
|
speed = 16
|
||||||
flip_sprite = false
|
flip_sprite = false
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
|
@ -13,7 +24,7 @@ texture = ExtResource( 1 )
|
||||||
centered = false
|
centered = false
|
||||||
|
|
||||||
[node name="Laser" type="Line2D" parent="."]
|
[node name="Laser" type="Line2D" parent="."]
|
||||||
visible = false
|
material = SubResource( 1 )
|
||||||
position = Vector2( 4, 2 )
|
position = Vector2( 4, 2 )
|
||||||
points = PoolVector2Array( 0, 0, 0, 8 )
|
points = PoolVector2Array( 0, 0, 0, 8 )
|
||||||
width = 2.0
|
width = 2.0
|
||||||
|
@ -27,3 +38,19 @@ collide_with_areas = true
|
||||||
[node name="Timer" type="Timer" parent="."]
|
[node name="Timer" type="Timer" parent="."]
|
||||||
process_mode = 0
|
process_mode = 0
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|
||||||
|
[node name="SparkParticles" type="CPUParticles2D" parent="."]
|
||||||
|
position = Vector2( 4, 0 )
|
||||||
|
amount = 16
|
||||||
|
lifetime = 0.5
|
||||||
|
texture = ExtResource( 4 )
|
||||||
|
spread = 180.0
|
||||||
|
gravity = Vector2( 0, 0 )
|
||||||
|
initial_velocity = 30.0
|
||||||
|
initial_velocity_random = 0.5
|
||||||
|
damping = 50.0
|
||||||
|
angle = 720.0
|
||||||
|
angle_random = 1.0
|
||||||
|
scale_amount = 0.3
|
||||||
|
scale_amount_curve = SubResource( 2 )
|
||||||
|
color = Color( 1, 1, 0.290196, 1 )
|
||||||
|
|
17
shaders/color_noise.gdshader
Normal file
17
shaders/color_noise.gdshader
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
uniform bool animate_noise = false;
|
||||||
|
uniform float noise_intensity = 1.0;
|
||||||
|
|
||||||
|
float random (vec2 uv) {
|
||||||
|
return fract(sin(dot(uv.xy,
|
||||||
|
vec2(12.9898,78.233))) * 43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec2 noise_uv = SCREEN_UV + TIME * float(animate_noise);
|
||||||
|
float noise = random(noise_uv);
|
||||||
|
noise = mix(1.0 - noise_intensity, 1.0, noise);
|
||||||
|
|
||||||
|
COLOR = vec4(COLOR.rgb * noise, COLOR.a);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue