treadmill shader fix

previously when adjusting the value of the shader, it would change the value for all shaders.

now it duplicates the shader at runtime so it's a unique copy and can have it's own unique shhader value
This commit is contained in:
Harmony Monroe 2020-10-05 13:48:05 -04:00
parent 5f476210ff
commit 8c9c34f33a
4 changed files with 39 additions and 10 deletions

View file

@ -17,7 +17,7 @@ shader_param/speed = 1.0
[node name="Node2D" type="Node2D"]
[node name="SolidTileMap" parent="." instance=ExtResource( 4 )]
tile_data = PoolIntArray( 65516, 0, 0, 65517, 0, 0, 65518, 0, 0, 65519, 0, 0, 65520, 0, 0, 65521, 0, 0, 65529, 0, 65538, 65530, 0, 65536, 65531, 0, 65538, 65532, 0, 0, 65533, 0, 0, 65534, 0, 65537, 65535, 0, 0, 0, 0, 0, 1, 0, 65538, 2, 0, 0, 3, 0, 65537, 4, 0, 0, 5, 0, 0, 6, 0, 196609, 131057, 0, 0, 131058, 0, 0, 131059, 0, 0, 131060, 0, 0, 131061, 0, 0, 131062, 0, 0, 131063, 0, 0, 131064, 0, 0, 131065, 0, 0 )
tile_data = PoolIntArray( 65529, 0, 65538, 65530, 0, 65536, 65531, 0, 65538, 65532, 0, 0, 65533, 0, 0, 65534, 0, 65537, 65535, 0, 0, 0, 0, 0, 1, 0, 65538, 2, 0, 0, 3, 0, 65537, 4, 0, 0, 5, 0, 0, 6, 0, 196609, 131047, 0, 0, 131048, 0, 0, 131049, 0, 0, 131050, 0, 0, 131051, 0, 0, 131058, 0, 0, 131059, 0, 0, 131060, 0, 0, 131061, 0, 0, 131062, 0, 0, 131063, 0, 0, 131064, 0, 0, 131065, 0, 0, 196587, 0, 0, 196588, 0, 0, 196589, 0, 0, 196590, 0, 0, 196591, 0, 0, 196592, 0, 0, 196593, 0, 0, 196594, 0, 0 )
[node name="SpikeTileMap" parent="." instance=ExtResource( 7 )]
z_as_relative = false
@ -47,9 +47,26 @@ position = Vector2( -37, -8 )
[node name="Treadmill7" parent="Actors" instance=ExtResource( 1 )]
position = Vector2( -112, 0 )
hitbox_x = 56
tread_speed = -0.5
tread_speed = -0.3
length = 7
[node name="Treadmill8" parent="Actors" instance=ExtResource( 1 )]
position = Vector2( -200, 0 )
hitbox_x = 40
tread_speed = 0.3
length = 5
[node name="Treadmill9" parent="Actors" instance=ExtResource( 1 )]
position = Vector2( -160, 8 )
hitbox_x = 24
length = 3
[node name="Treadmill10" parent="Actors" instance=ExtResource( 1 )]
position = Vector2( -136, 8 )
hitbox_x = 24
tread_speed = 0.5
length = 3
[node name="Sprite" type="Sprite" parent="."]
visible = false
material = SubResource( 1 )

View file

@ -2,11 +2,20 @@
[ext_resource path="res://Script/Treadmill.gd" type="Script" id=1]
[ext_resource path="res://Image/tread.png" type="Texture" id=2]
[ext_resource path="res://Shader/scrollx.shader" type="Shader" id=3]
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 3 )
shader_param/speed = 0.7
[sub_resource type="Shader" id=1]
code = "shader_type canvas_item;
render_mode blend_mix;
uniform float speed = 1.0;
void fragment() {
COLOR = texture(TEXTURE, UV + vec2(TIME * speed, 0.0));
}"
custom_defines = ""
[sub_resource type="ShaderMaterial" id=2]
shader = SubResource( 1 )
shader_param/speed = 4.0
[node name="Treadmill" type="Node2D" groups=[
"actor",
@ -15,10 +24,10 @@ shader_param/speed = 0.7
script = ExtResource( 1 )
tag = "treadmill"
is_solid = true
tread_speed = -0.7
tread_speed = -0.5
[node name="Sprite" type="Sprite" parent="."]
material = SubResource( 1 )
material = SubResource( 2 )
texture = ExtResource( 2 )
centered = false
region_enabled = true

View file

@ -8,10 +8,14 @@ export var editor_move := 0 setget _set_editor_move
var node_sprite : Sprite
func _ready():
# editor and game code
node_sprite = $Sprite
node_sprite.material = node_sprite.material.duplicate(true)
#node_sprite.material = node_sprite.get_material().duplicate(true)
#node_sprite.set_material(node_sprite.get_material().duplicate(true))
print(node_sprite.material)
_set_tread_speed(tread_speed)
_set_length(length)

View file

@ -88,7 +88,6 @@ Shared="*res://Script/Shared.gd"
window/size/width=320
window/size/height=180
window/size/always_on_top=true
window/dpi/allow_hidpi=true
window/stretch/mode="viewport"
window/stretch/aspect="keep"