Added shield shader
This commit is contained in:
@@ -108,13 +108,15 @@ func _add_weapon(weapon: AbstractWeapon, weapon_position: Vector2) -> void:
|
||||
_weapons.append(weapon)
|
||||
|
||||
|
||||
func _on_shield_updated(value: int, _max_value: int) -> void:
|
||||
func _on_shield_updated(value: int, max_value: int) -> void:
|
||||
shield_sprite.visible = value != 0
|
||||
shield_sprite.material.set("shader_parameter/intensity", value/float(max_value))
|
||||
|
||||
|
||||
func _on_armor_updated(value: int, _max_value: int) -> void:
|
||||
func _on_armor_updated(value: int, max_value: int) -> void:
|
||||
armor_sprite.visible = value != 0
|
||||
armor_sprite.material.set("shader_parameter/intensity", value/float(max_value))
|
||||
|
||||
|
||||
func _on_hull_updated(_value: int, _max_value: int) -> void:
|
||||
pass # Replace with function body.
|
||||
pass
|
||||
|
||||
@@ -1,9 +1,22 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://jvyagshykmgb"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://jvyagshykmgb"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cesibaqtrgotl" path="res://game/entities/ships/abstract_ship.gd" id="1_6isjb"]
|
||||
[ext_resource type="Shader" uid="uid://dwh22f35u5qqi" path="res://game/entities/ships/shield.gdshader" id="2_dokxo"]
|
||||
[ext_resource type="PackedScene" uid="uid://clkymhkv3cevm" path="res://game/health_system/health.tscn" id="2_xxtvk"]
|
||||
[ext_resource type="PackedScene" uid="uid://d2snum2pxc2ui" path="res://game/health_system/health_bar/heath_bar.tscn" id="3_l62e5"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dokxo"]
|
||||
shader = ExtResource("2_dokxo")
|
||||
shader_parameter/speed = 0.0
|
||||
shader_parameter/scale = 20.0
|
||||
shader_parameter/intensity = 1.0
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bkxo4"]
|
||||
shader = ExtResource("2_dokxo")
|
||||
shader_parameter/speed = 5.0
|
||||
shader_parameter/scale = 20.0
|
||||
shader_parameter/intensity = 1.0
|
||||
|
||||
[node name="AbstractShip" type="CharacterBody2D"]
|
||||
disable_mode = 1
|
||||
motion_mode = 1
|
||||
@@ -13,8 +26,10 @@ script = ExtResource("1_6isjb")
|
||||
[node name="ShipSprite" type="Sprite2D" parent="."]
|
||||
|
||||
[node name="ArmorSprite" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_dokxo")
|
||||
|
||||
[node name="ShieldSprite" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_bkxo4")
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform float speed = 5.0;
|
||||
uniform float scale = 20.0;
|
||||
uniform float intensity = 1;
|
||||
|
||||
float rand(vec2 coord) {
|
||||
return fract(sin(dot(coord, vec2(12.9898, 78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
float cellular(vec2 coord) {
|
||||
vec2 i = floor(coord);
|
||||
vec2 f = fract(coord);
|
||||
|
||||
float min_dist = 1.0;
|
||||
|
||||
for (int y = -1; y <= 1; y++) {
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x), float(y));
|
||||
vec2 point = vec2(rand(i + neighbor), rand(i + neighbor + vec2(1000.0)));
|
||||
point = 0.5 * sin(TIME * speed + 6.2831 * point);
|
||||
vec2 diff = neighbor + point - f;
|
||||
float dist = length(diff);
|
||||
min_dist = min(min_dist, dist);
|
||||
}
|
||||
}
|
||||
|
||||
return min_dist;
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec2 coord = UV * scale;
|
||||
|
||||
float pattern = cellular(coord);
|
||||
|
||||
float alpha = COLOR.a;
|
||||
if (pattern > intensity) {
|
||||
alpha = 0.0;
|
||||
}
|
||||
|
||||
COLOR = vec4(COLOR.rgb, alpha);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://dwh22f35u5qqi
|
||||
+2
-2
@@ -23,9 +23,9 @@ func _on_enemy_timer_timeout() -> void:
|
||||
if enemies.size() < 1:
|
||||
enemy_swamp_controller.create_enemy()
|
||||
|
||||
var factor := maxi(enemies.size(), 1)
|
||||
var factor := maxi(enemies.size(), 1) * 0.5
|
||||
|
||||
enemy_timer.start(randi_range(1 * factor, 3 * factor))
|
||||
enemy_timer.start(randf_range(1 * factor, 3 * factor))
|
||||
|
||||
|
||||
func _on_player_ship_destroyed() -> void:
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user