use sprites for foreground

This commit is contained in:
Arnaud Vergnet 2021-05-06 10:16:58 +02:00
parent fac981d078
commit 225a55bacd
7 changed files with 112 additions and 67 deletions

View file

@ -110,9 +110,8 @@ func update_score():
func _on_player_score() -> void:
if game_mode == "score":
update_score()
update_score()
func _on_Timer_timeout() -> void:
if game_mode == "time":
update_score()
update_score()

View file

@ -0,0 +1,35 @@
extends Sprite
export var scroll_speed = 9
var moving = false
signal viewport_entered(object)
signal viewport_exited(object)
func start():
moving = true
func stop():
moving = false
func _physics_process(delta):
if moving:
move()
func move():
position.x -= scroll_speed
func _on_VisibilityNotifier2D_viewport_entered(viewport: Viewport) -> void:
print("viewport_entered")
emit_signal("viewport_entered", self)
func _on_VisibilityNotifier2D_viewport_exited(viewport: Viewport) -> void:
print("viewport_exited")
emit_signal("viewport_exited", self)

View file

@ -0,0 +1,36 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://mini-game/ressources/backgrounds/road3.png" type="Texture" id=1]
[ext_resource path="res://mini-game/scenes/decor/ForegroundSprite.gd" type="Script" id=2]
[sub_resource type="Shader" id=1]
code = "shader_type canvas_item;
uniform float scroll_speed;
void fragment(){
vec2 u = UV;
u.x += scroll_speed*TIME;
vec4 color = texture(TEXTURE,u);
COLOR = color;
}
"
[sub_resource type="ShaderMaterial" id=2]
shader = SubResource( 1 )
shader_param/scroll_speed = 0.0
[node name="ForegroundSprite" type="Sprite"]
material = SubResource( 2 )
texture = ExtResource( 1 )
offset = Vector2( 960, 540 )
script = ExtResource( 2 )
__meta__ = {
"_editor_description_": ""
}
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."]
position = Vector2( 1930, 540 )
[connection signal="viewport_entered" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_viewport_entered"]
[connection signal="viewport_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_viewport_exited"]

View file

@ -1,28 +1,38 @@
extends Node2D
onready var texture : TextureRect = $TextureRect
var sprite_scene = preload("res://mini-game/scenes/decor/ForegroundSprite.tscn")
var force_stop = false
var moving = false
var textures := []
var moving := false
func _ready():
textures.append($ForegroundSprite)
stop()
func stop():
moving = false
force_stop = true
texture.material.set_shader_param("scroll_speed", 0)
for t in textures:
t.stop()
func start():
moving = true
force_stop = false
texture.material.set_shader_param("scroll_speed", 0.282)
#texture.material.set_shader_param("scroll_speed", 0.2)
for t in textures:
t.start()
func _process(delta):
if not force_stop:
if get_tree().paused and moving:
stop()
force_stop = false
elif not get_tree().paused and not moving:
start()
func _on_ForegroundSprite_viewport_entered(object: Sprite) -> void:
var new_sprite = sprite_scene.instance()
new_sprite.position = Vector2(1920, 0)
new_sprite.connect("viewport_entered", self, "_on_ForegroundSprite_viewport_entered")
new_sprite.connect("viewport_exited", self, "_on_ForegroundSprite_viewport_exited")
if moving:
new_sprite.start()
add_child(new_sprite)
textures.append(new_sprite)
func _on_ForegroundSprite_viewport_exited(object: Sprite) -> void:
textures.remove(textures.find(object))
object.queue_free()

View file

@ -1,45 +1,21 @@
[gd_scene load_steps=6 format=2]
[gd_scene load_steps=4 format=2]
[ext_resource path="res://mini-game/scenes/decor/foreground.gd" type="Script" id=1]
[ext_resource path="res://mini-game/ressources/backgrounds/road3.png" type="Texture" id=2]
[sub_resource type="Shader" id=1]
code = "shader_type canvas_item;
uniform float scroll_speed;
void fragment(){
vec2 u = UV;
u.x += scroll_speed*TIME;
vec4 color = texture(TEXTURE,u);
COLOR = color;
}
"
[sub_resource type="ShaderMaterial" id=2]
shader = SubResource( 1 )
shader_param/scroll_speed = 0.0
[ext_resource path="res://mini-game/scenes/decor/ForegroundSprite.tscn" type="PackedScene" id=2]
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 958.398, 78.6175 )
[node name="foreground" type="Node2D"]
pause_mode = 2
script = ExtResource( 1 )
[node name="TextureRect" type="TextureRect" parent="."]
material = SubResource( 2 )
margin_right = 1920.0
margin_bottom = 1080.0
texture = ExtResource( 2 )
stretch_mode = 2
__meta__ = {
"_edit_use_anchors_": false,
"_editor_description_": ""
}
[node name="StaticBody2D" type="StaticBody2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
position = Vector2( 960, 1080 )
shape = SubResource( 3 )
[node name="ForegroundSprite" parent="." instance=ExtResource( 2 )]
[connection signal="viewport_entered" from="ForegroundSprite" to="." method="_on_ForegroundSprite_viewport_entered"]
[connection signal="viewport_exited" from="ForegroundSprite" to="." method="_on_ForegroundSprite_viewport_exited"]

View file

@ -27,7 +27,7 @@ var au_sol = true
var current_lives = max_lives
onready var animation = $AnimatedSprite
onready var bonus_texture = $BonusControl/TextureRect
onready var bonus_texture = $BonusControl/Sprite
onready var bonus_tween = $BonusControl/Tween
onready var bonus_timer = $BonusControl/Timer
@ -95,6 +95,7 @@ func play_bonus_anim():
bonus_tween.stop_all()
bonus_timer.stop()
bonus_tween.interpolate_property(bonus_texture, "modulate", null, Color(1, 1, 1, 1), 0.3, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
bonus_tween.interpolate_property(bonus_texture, "position", Vector2(bonus_texture.position.x, 0), Vector2(bonus_texture.position.x, bonus_texture.position.y), 0.3, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
bonus_tween.start()
bonus_timer.start()

View file

@ -73,24 +73,12 @@ position = Vector2( -0.0400658, 9.23466 )
scale = Vector2( 0.609429, 0.281311 )
shape = SubResource( 3 )
[node name="BonusControl" type="Control" parent="."]
margin_right = 40.0
margin_bottom = 40.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BonusControl" type="Node2D" parent="."]
[node name="TextureRect" type="TextureRect" parent="BonusControl"]
margin_left = -10.7864
margin_top = -26.3001
margin_right = 10.2136
margin_bottom = -11.3001
[node name="Sprite" type="Sprite" parent="BonusControl"]
position = Vector2( 0, -15 )
scale = Vector2( 0.02, 0.02 )
texture = ExtResource( 22 )
expand = true
stretch_mode = 6
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Tween" type="Tween" parent="BonusControl"]