From be5200df26f226afe7d7c0575dca3ee16ca00a42 Mon Sep 17 00:00:00 2001 From: dariasteam Date: Thu, 27 Jul 2017 19:39:45 +0100 Subject: [PATCH] Rayo --- corazon_vacio.png.flags | 2 + enemy_1.gd | 4 +- enemy_1.tscn | 34 +++++++-------- player.gd | 4 +- player.tscn | 49 +++++++-------------- ray.gd | 16 +++++++ ray_milk.tscn | 96 +++++++++++++++++++++++++++++++++++++++++ rayo_leche.gd | 40 +++++++++++++++++ shooter.gd | 60 +++++++++++++++++--------- top.tscn | 2 +- 10 files changed, 231 insertions(+), 76 deletions(-) create mode 100644 ray.gd create mode 100644 ray_milk.tscn create mode 100644 rayo_leche.gd diff --git a/corazon_vacio.png.flags b/corazon_vacio.png.flags index efb2b8c..8b08f35 100644 --- a/corazon_vacio.png.flags +++ b/corazon_vacio.png.flags @@ -1 +1,3 @@ filter=false +gen_mipmaps=false +repeat=true diff --git a/enemy_1.gd b/enemy_1.gd index a2147de..ae501a6 100644 --- a/enemy_1.gd +++ b/enemy_1.gd @@ -74,7 +74,7 @@ func _on_area_body_body_enter( body ): func _on_area_head_body_enter( body ): if (body.is_in_group("player") and body.can_receive_damage()): - if (body.get_pos().y < get_pos().y): + if (body.foots.get_pos().y > get_pos().y): print ("cabeza") life = 0 - die_by_jump() + die_by_jump() \ No newline at end of file diff --git a/enemy_1.tscn b/enemy_1.tscn index e7bc936..299c562 100644 --- a/enemy_1.tscn +++ b/enemy_1.tscn @@ -12,42 +12,42 @@ [ext_resource path="res://malvado_caminando0008.tex" type="Texture" id=10] [ext_resource path="res://malvado_caminando0009.tex" type="Texture" id=11] -[sub_resource type="ConvexPolygonShape2D" id=17] +[sub_resource type="ConvexPolygonShape2D" id=1] custom_solver_bias = 0.0 points = Vector2Array( 8.90625, -8.09232, 8.57639, -19.4815, 26.3889, -19.4815, 26.7188, 8.39203 ) -[sub_resource type="ConvexPolygonShape2D" id=18] +[sub_resource type="ConvexPolygonShape2D" id=2] custom_solver_bias = 0.0 points = Vector2Array( 2.63889, -0.899147, 8.90625, -8.09232, 26.7188, 8.39203, 20.1215, 15.8849, 5.27778, 15.5852, 0.989584, 8.09231 ) -[sub_resource type="ConvexPolygonShape2D" id=19] +[sub_resource type="ConvexPolygonShape2D" id=3] custom_solver_bias = 0.0 points = Vector2Array( -3.29861, -5.99431, 2.63889, -0.899147, 0.989584, 8.09231, -7.91667, 2.09801, -8.24653, -3.59659 ) -[sub_resource type="RectangleShape2D" id=16] +[sub_resource type="RectangleShape2D" id=4] custom_solver_bias = 0.0 extents = Vector2( 13.0125, 38.3532 ) -[sub_resource type="ConvexPolygonShape2D" id=13] +[sub_resource type="ConvexPolygonShape2D" id=5] custom_solver_bias = 0.0 points = Vector2Array( 8.90625, -8.09232, 8.57639, -19.4815, 26.3889, -19.4815, 26.7188, 8.39203 ) -[sub_resource type="ConvexPolygonShape2D" id=14] +[sub_resource type="ConvexPolygonShape2D" id=6] custom_solver_bias = 0.0 points = Vector2Array( 2.63889, -0.899147, 8.90625, -8.09232, 26.7188, 8.39203, 20.1215, 15.8849, 5.27778, 15.5852, 0.989584, 8.09231 ) -[sub_resource type="ConvexPolygonShape2D" id=15] +[sub_resource type="ConvexPolygonShape2D" id=7] custom_solver_bias = 0.0 points = Vector2Array( -3.29861, -5.99431, 2.63889, -0.899147, 0.989584, 8.09231, -7.91667, 2.09801, -8.24653, -3.59659 ) -[sub_resource type="SpriteFrames" id=5] +[sub_resource type="SpriteFrames" id=8] animations = [ { "frames": [ ExtResource( 2 ), ExtResource( 3 ), ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 11 ) ], @@ -64,13 +64,13 @@ animations = [ { transform/pos = Vector2( 64.3, -80 ) transform/scale = Vector2( 1.79062, 1.8 ) input/pickable = false -shapes/0/shape = SubResource( 17 ) +shapes/0/shape = SubResource( 1 ) shapes/0/transform = Matrix32( 1.68421, 0, 0, 1.85361, -19.4444, 6.66667 ) shapes/0/trigger = false -shapes/1/shape = SubResource( 18 ) +shapes/1/shape = SubResource( 2 ) shapes/1/transform = Matrix32( 1.68421, 0, 0, 1.85361, -19.4444, 6.66667 ) shapes/1/trigger = false -shapes/2/shape = SubResource( 19 ) +shapes/2/shape = SubResource( 3 ) shapes/2/transform = Matrix32( 1.68421, 0, 0, 1.85361, -19.4444, 6.66667 ) shapes/2/trigger = false collision/layers = 5 @@ -96,7 +96,7 @@ trigger = false transform/pos = Vector2( 9.60559, -33.6111 ) transform/scale = Vector2( 0.47993, 0.112847 ) input/pickable = false -shapes/0/shape = SubResource( 16 ) +shapes/0/shape = SubResource( 4 ) shapes/0/transform = Matrix32( 2.41445, 0, 0, 0.77017, 0.581818, 2.46155 ) shapes/0/trigger = true gravity_vec = Vector2( 0, 1 ) @@ -111,7 +111,7 @@ collision/mask = 34 transform/pos = Vector2( 0.581818, 2.46155 ) transform/scale = Vector2( 2.41445, 0.77017 ) -shape = SubResource( 16 ) +shape = SubResource( 4 ) trigger = true _update_shape_index = 0 @@ -120,13 +120,13 @@ _update_shape_index = 0 transform/pos = Vector2( -4.07679, 1.11111 ) transform/scale = Vector2( 0.9363, 1.08512 ) input/pickable = false -shapes/0/shape = SubResource( 13 ) +shapes/0/shape = SubResource( 5 ) shapes/0/transform = Matrix32( 1.79879, 0, 0, 1.7082, -16.6219, 4.86533 ) shapes/0/trigger = false -shapes/1/shape = SubResource( 14 ) +shapes/1/shape = SubResource( 6 ) shapes/1/transform = Matrix32( 1.79879, 0, 0, 1.7082, -16.6219, 4.86533 ) shapes/1/trigger = false -shapes/2/shape = SubResource( 15 ) +shapes/2/shape = SubResource( 7 ) shapes/2/transform = Matrix32( 1.79879, 0, 0, 1.7082, -16.6219, 4.86533 ) shapes/2/trigger = false gravity_vec = Vector2( 0, 1 ) @@ -149,7 +149,7 @@ trigger = false [node name="Sprite" type="AnimatedSprite" parent="."] transform/pos = Vector2( 3.8147e-06, 0 ) -frames = SubResource( 5 ) +frames = SubResource( 8 ) animation = "walking" frame = 8 diff --git a/player.gd b/player.gd index 829b617..490b524 100644 --- a/player.gd +++ b/player.gd @@ -20,6 +20,7 @@ var walk_speed = 0 onready var shooter = get_node("shooter") onready var sprite = get_node("sprite") +onready var foots = get_node("foots") var can_jump = true var jumping = false @@ -62,9 +63,7 @@ func on_opacity_high (): func on_receive_damage (): if (can_receive_damage()): - print ("invulnerabilidad on") show_damage() - func can_receive_damage (): return receive_damage @@ -91,7 +90,6 @@ func show_damage (): yield(t1, "timeout") t2.start() yield(t2, "timeout") - print ("invulnerabilidad off") change_collision() func can_jump_more (): diff --git a/player.tscn b/player.tscn index f6708f3..661bea8 100644 --- a/player.tscn +++ b/player.tscn @@ -1,11 +1,12 @@ -[gd_scene load_steps=10 format=1] +[gd_scene load_steps=11 format=1] [ext_resource path="res://player.gd" type="Script" id=1] [ext_resource path="res://shooter.gd" type="Script" id=2] -[ext_resource path="res://vaca_idle_1.tex" type="Texture" id=3] -[ext_resource path="res://vaca_idle_2.tex" type="Texture" id=4] -[ext_resource path="res://vaca_idle_3.tex" type="Texture" id=5] -[ext_resource path="res://vaca_idle_4.tex" type="Texture" id=6] +[ext_resource path="res://ray_milk.tscn" type="PackedScene" id=3] +[ext_resource path="res://vaca_idle_1.tex" type="Texture" id=4] +[ext_resource path="res://vaca_idle_2.tex" type="Texture" id=5] +[ext_resource path="res://vaca_idle_3.tex" type="Texture" id=6] +[ext_resource path="res://vaca_idle_4.tex" type="Texture" id=7] [sub_resource type="ConvexPolygonShape2D" id=1] @@ -20,7 +21,7 @@ extents = Vector2( 12.363, 15.2052 ) [sub_resource type="SpriteFrames" id=3] animations = [ { -"frames": [ ExtResource( 3 ), ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 5 ), ExtResource( 4 ) ], +"frames": [ ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 6 ), ExtResource( 5 ) ], "loop": true, "name": "Idle", "speed": 10.0 @@ -55,33 +56,10 @@ transform/scale = Vector2( 0.5, 0.5 ) script/script = ExtResource( 2 ) SHOOT_CADENCE = 0.1 -[node name="Particles2D1" type="Particles2D" parent="shooter"] +[node name="ray" parent="shooter" instance=ExtResource( 3 )] -visibility/visible = false -transform/pos = Vector2( -17.0383, 8.60367 ) -transform/scale = Vector2( 2, 2 ) -config/amount = 32 -config/lifetime = 6.0 -config/process_mode = 1 -config/local_space = false -config/explosiveness = 1.1 -params/direction = 120.0 -params/spread = 30.0 -params/linear_velocity = 20.0 -params/spin_velocity = 0.0 -params/orbit_velocity = 0.0 -params/gravity_direction = 0.0 -params/gravity_strength = 9.8 -params/radial_accel = 0.0 -params/tangential_accel = 0.0 -params/damping = 0.0 -params/initial_angle = 0.0 -params/initial_size = 5.0 -params/final_size = 15.0 -params/hue_variation = 0.0 -params/anim_speed_scale = 1.0 -params/anim_initial_pos = 0.0 -randomness/initial_size = 1.0 +transform/pos = Vector2( -4.25251, 3.87422 ) +layer_mask = 30 [node name="Collision_Normal" type="CollisionPolygon2D" parent="."] @@ -104,7 +82,7 @@ _update_shape_index = 1 frames = SubResource( 3 ) animation = "Idle" -frame = 3 +frame = 1 playing = true [node name="Camera2D" type="Camera2D" parent="sprite"] @@ -128,6 +106,11 @@ drag_margin/top = 0.2 drag_margin/right = 0.2 drag_margin/bottom = 0.2 +[node name="foots" type="Node2D" parent="."] + +transform/pos = Vector2( -0.0271127, 37.1198 ) +transform/scale = Vector2( 0.885237, 0.0763853 ) + [connection signal="looking_left" from="." to="shooter" method="_on_KinematicBody2D_looking_left"] [connection signal="looking_right" from="." to="shooter" method="_on_KinematicBody2D_looking_right"] diff --git a/ray.gd b/ray.gd new file mode 100644 index 0000000..067c7b1 --- /dev/null +++ b/ray.gd @@ -0,0 +1,16 @@ +extends RayCast2D + +# class member variables go here, for example: +# var a = 2 +# var b = "textvar" + + +func _ready(): + set_fixed_process(true) + pass + +func _fixed_process(delta): + if (is_colliding()): + print ("Colliding") + else: + print ("Not colliding") diff --git a/ray_milk.tscn b/ray_milk.tscn new file mode 100644 index 0000000..dc28849 --- /dev/null +++ b/ray_milk.tscn @@ -0,0 +1,96 @@ +[gd_scene load_steps=6 format=1] + +[ext_resource path="res://rayo_leche.gd" type="Script" id=1] +[ext_resource path="res://corazon2.tex" type="Texture" id=2] +[ext_resource path="res://corazon_vacio.png" type="Texture" id=3] + +[sub_resource type="RectangleShape2D" id=1] + +custom_solver_bias = 0.0 +extents = Vector2( 32, 32 ) + +[sub_resource type="GDScript" id=2] + +script/source = "extends Area2D + +# class member variables go here, for example: +# var a = 2 +# var b = \"textvar\" + +func _ready(): + # Called every time the node is added to the scene. + # Initialization here + pass + +func _fixed_process(delta): + set_enable_monitoring(false) + + var t = Timer.new() + t.set_wait_time(0.2) + t.set_one_shot(true) + self.add_child(t) + t.start() + yield(t, \"timeout\") + + set_enable_monitoring(true) + set_fixed_process(false) + +func _on_Area2D_body_enter( body ): + if (body.is_in_group(\"enemy\")): + body.decrease_life(1) + set_fixed_process(true) + +" + +[node name="ray" type="RayCast2D"] + +enabled = true +cast_to = Vector2( 10000, 0 ) +layer_mask = 63 +type_mask = 31 +script/script = ExtResource( 1 ) +damage = 10 + +[node name="end" type="Sprite" parent="."] + +transform/pos = Vector2( -16, -16 ) +transform/scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 2 ) + +[node name="Area2D" type="Area2D" parent="end"] + +input/pickable = false +shapes/0/shape = SubResource( 1 ) +shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 ) +shapes/0/trigger = false +gravity_vec = Vector2( 0, 1 ) +gravity = 98.0 +linear_damp = 0.1 +angular_damp = 1.0 +monitorable = false +script/script = SubResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="end/Area2D"] + +shape = SubResource( 1 ) +trigger = false +_update_shape_index = 0 + +[node name="origin" type="Sprite" parent="."] + +transform/pos = Vector2( -16, -16 ) +transform/scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 2 ) + +[node name="middle" type="Sprite" parent="."] + +transform/pos = Vector2( 0, -32 ) +transform/scale = Vector2( 0.5, 4.26667 ) +texture = ExtResource( 3 ) +centered = false +region = true +region_rect = Rect2( 10, 10, 0, 15 ) + +[connection signal="body_enter" from="end/Area2D" to="end/Area2D" method="_on_Area2D_body_enter"] + + diff --git a/rayo_leche.gd b/rayo_leche.gd new file mode 100644 index 0000000..f8e9558 --- /dev/null +++ b/rayo_leche.gd @@ -0,0 +1,40 @@ +extends RayCast2D + +onready var middle = get_node("middle") +onready var end = get_node("end") +onready var origin = get_node("origin") +onready var area = get_node("end/Area2D") + +export var damage = 10 + +var enabled = false +const MAX_DISTANCE = 100000 +var distance = MAX_DISTANCE + +func look_left(): + distance = -MAX_DISTANCE + middle.set_rot(PI) + +func look_right(): + distance = MAX_DISTANCE + middle.set_rot(0) + +func _ready(): + set_fixed_process(true) + +func enable(): + enabled = true + +func disable(): + enabled = false + middle.set_region_rect(Rect2(Vector2(0,0),Vector2(0,0))) + end.set_global_pos(get_global_pos()) + +func _fixed_process(delta): + if (enabled): + area.set_enable_monitoring(true) + set_cast_to(Vector2(distance, 0)) + var end_point = Vector2 (abs(get_global_pos().x - get_collision_point().x) * 2, 10) + middle.set_region_rect(Rect2(get_pos(),end_point)) + end.set_global_pos(get_collision_point()) + origin.set_pos(get_pos()) \ No newline at end of file diff --git a/shooter.gd b/shooter.gd index 1ad6050..d3ff9cb 100644 --- a/shooter.gd +++ b/shooter.gd @@ -4,41 +4,61 @@ extends Node2D # var a = 2 # var b = "textvar" const BULLET = preload("res://bullet.tscn") +export var SHOOT_CADENCE = 0.5 + +enum WEAPONS { + regular, + laser +} + +var weapon = WEAPONS.laser var shooting = false onready var player = get_parent() - -export var SHOOT_CADENCE = 0.5 +onready var instanced_ray = get_node("ray") var shoot_dir = Vector2(500,-250) func _ready(): set_fixed_process(true) -func _fixed_process(delta): + +func shoot_regular (): + var instanced_bullet = BULLET.instance() + get_parent().get_parent().add_child(instanced_bullet) + instanced_bullet.set_global_pos(get_global_pos()) + instanced_bullet.set_linear_velocity(shoot_dir + Vector2(rand_range(-100, 100), rand_range(-100, 100))) + + shooting = true + + var t = Timer.new() + t.set_wait_time(SHOOT_CADENCE) + t.set_one_shot(true) + self.add_child(t) + t.start() + yield(t, "timeout") + shooting = false + player.decrease_milk() + +func shoot_laser(): + player.decrease_milk() + +func _fixed_process(delta): if (Input.is_action_pressed("ui_shoot") and !shooting and player.get_milk_level() > 0): - - var instanced_bullet = BULLET.instance() - get_parent().get_parent().add_child(instanced_bullet) - instanced_bullet.set_global_pos(get_global_pos()) - instanced_bullet.set_linear_velocity(shoot_dir + Vector2(rand_range(-100, 100), rand_range(-100, 100))) - - shooting = true - - var t = Timer.new() - t.set_wait_time(SHOOT_CADENCE) - t.set_one_shot(true) - self.add_child(t) - t.start() - yield(t, "timeout") - shooting = false - player.decrease_milk() - + if (weapon == WEAPONS.regular): + shoot_regular() + elif (weapon == WEAPONS.laser): + instanced_ray.enable() + shoot_laser() + else: + instanced_ray.disable() func _on_KinematicBody2D_looking_left(): shoot_dir = Vector2(-500,-250) set_pos(Vector2(-30, 0)) + instanced_ray.look_left() func _on_KinematicBody2D_looking_right(): shoot_dir = Vector2(500,-250) set_pos(Vector2(30, 0)) + instanced_ray.look_right() diff --git a/top.tscn b/top.tscn index 34e6986..3d2a225 100644 --- a/top.tscn +++ b/top.tscn @@ -51,7 +51,7 @@ __meta__ = { ] instance=ExtResource( 2 )] editor/display_folded = true -transform/pos = Vector2( -2240, -3104 ) +transform/pos = Vector2( 640, -3744 ) JUMP_SPEED = 600 MAX_JUMP_TIME = 25 max_milk = 100