From a8fd5022fc7b68d73d041a9d580f880a9f0307b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robin=20H=C3=BCbner?= Date: Sat, 12 Aug 2017 23:54:09 +0200 Subject: [PATCH] add fire cone for small ship, also make player shit get hit by boolets --- Bullet.gd | 2 +- EnemyGrunt.gd | 20 ++++ EnemyGrunt.tscn | 36 ++++++- Game.tscn | 68 +----------- Gun.gd | 2 +- Kinematic.gd | 2 +- Player.gd | 2 +- Player.tscn | 54 ++++++++-- export.cfg | 282 ++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 384 insertions(+), 84 deletions(-) create mode 100644 export.cfg diff --git a/Bullet.gd b/Bullet.gd index 64a5edd..fe632cb 100644 --- a/Bullet.gd +++ b/Bullet.gd @@ -48,7 +48,7 @@ func _fixed_process(delta): if is_colliding(): var e = get_collider() var e_t = e.type() - if e_t == "Asteroid" or e_t == "Enemy" or e_t == "PowerStation": + if e_t == "Asteroid" or e_t == "Enemy" or e_t == "PowerStation" or e_t == "Player": on_impact(e) if lifetime <= 0: diff --git a/EnemyGrunt.gd b/EnemyGrunt.gd index 1660913..423c640 100644 --- a/EnemyGrunt.gd +++ b/EnemyGrunt.gd @@ -1,5 +1,8 @@ extends KinematicBody2D +onready var area = get_node("Area2D") +onready var gun = get_node("Ship/Gun") + var ExplosionEffect = load("res://ExplosionEffect.tscn") const km = preload("Kinematic.gd") @@ -16,6 +19,8 @@ var steering var s_seek var s_arrive +var player_in_cone = false + func _ready(): var t = get_tree().get_root().get_node("Game/MinimapControl").register_entity(self) set_fixed_process(true) @@ -30,6 +35,18 @@ func _ready(): s_seek.set_target(player) s_arrive.set_target(player) + # firing cone! + area.connect("body_enter", self, "on_body_enter") + area.connect("body_exit", self, "on_body_exit") + +func on_body_enter(b): + if b.type() == "Player": + player_in_cone = true + +func on_body_exit(b): + if b.type() == "Player": + player_in_cone = false + func on_explode(): # create explosion effect var new_ee = ExplosionEffect.instance() @@ -48,6 +65,9 @@ func _fixed_process(delta): s_arrive.get_steering(steering) cur_kinematic.update(steering, delta) + if player_in_cone: + gun.fire(delta, cur_kinematic.velocity * delta, cur_kinematic.get_orientation()) + if health <= 0: on_explode() diff --git a/EnemyGrunt.tscn b/EnemyGrunt.tscn index 3c012fe..5af7968 100644 --- a/EnemyGrunt.tscn +++ b/EnemyGrunt.tscn @@ -1,14 +1,20 @@ -[gd_scene load_steps=5 format=1] +[gd_scene load_steps=7 format=1] [ext_resource path="res://EnemyGrunt.gd" type="Script" id=1] [ext_resource path="res://raw/enemy_grunt.png" type="Texture" id=2] [ext_resource path="res://raw/exhaust.png" type="Texture" id=3] +[ext_resource path="res://Gun.gd" type="Script" id=4] [sub_resource type="RectangleShape2D" id=1] custom_solver_bias = 0.0 extents = Vector2( 8.55915, 8.40247 ) +[sub_resource type="ConvexPolygonShape2D" id=2] + +custom_solver_bias = 0.0 +points = Vector2Array( 0, -10, 8.66025, 5, -8.66025, 5 ) + [node name="EnemyGrunt" type="KinematicBody2D"] transform/pos = Vector2( 0.12851, 0 ) @@ -28,11 +34,11 @@ shape = SubResource( 1 ) trigger = false _update_shape_index = 0 -[node name="Sprite" type="Sprite" parent="."] +[node name="Ship" type="Sprite" parent="."] texture = ExtResource( 2 ) -[node name="Particles2D" type="Particles2D" parent="Sprite"] +[node name="Particles2D" type="Particles2D" parent="Ship"] transform/pos = Vector2( 0, -5.43192 ) transform/rot = 180.0 @@ -58,4 +64,28 @@ params/hue_variation = 0.0 params/anim_speed_scale = 1.0 params/anim_initial_pos = 0.0 +[node name="Gun" type="Node2D" parent="Ship"] + +transform/pos = Vector2( 0, 12.2383 ) +script/script = ExtResource( 4 ) + +[node name="Area2D" type="Area2D" parent="."] + +input/pickable = true +shapes/0/shape = SubResource( 2 ) +shapes/0/transform = Matrix32( 4, 0, 0, 16, 0.173824, 148.748 ) +shapes/0/trigger = true +gravity_vec = Vector2( 0, 1 ) +gravity = 98.0 +linear_damp = 0.1 +angular_damp = 1.0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] + +transform/pos = Vector2( 0.173824, 148.748 ) +transform/scale = Vector2( 4, 16 ) +shape = SubResource( 2 ) +trigger = true +_update_shape_index = 0 + diff --git a/Game.tscn b/Game.tscn index 498234d..8aae030 100644 --- a/Game.tscn +++ b/Game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=1] +[gd_scene load_steps=8 format=1] [ext_resource path="res://Game.gd" type="Script" id=1] [ext_resource path="res://Minimap.tscn" type="PackedScene" id=2] @@ -7,7 +7,6 @@ [ext_resource path="res://Player.tscn" type="PackedScene" id=5] [ext_resource path="res://raw/space.png" type="Texture" id=6] [ext_resource path="res://EnemyGrunt.tscn" type="PackedScene" id=7] -[ext_resource path="res://Missile.tscn" type="PackedScene" id=8] [node name="Game" type="Node"] @@ -72,69 +71,4 @@ region_rect = Rect2( 0, 0, 8192, 8192 ) transform/pos = Vector2( 127.878, -20.3627 ) transform/scale = Vector2( 1.5, 1.5 ) -[node name="EnemyGrunt1" parent="." instance=ExtResource( 7 )] - -transform/pos = Vector2( -154.501, -21.5904 ) -transform/scale = Vector2( 1.5, 1.5 ) - -[node name="EnemyGrunt2" parent="." instance=ExtResource( 7 )] - -transform/pos = Vector2( 361.148, -21.5904 ) -transform/scale = Vector2( 1.5, 1.5 ) - -[node name="EnemyGrunt3" parent="." instance=ExtResource( 7 )] - -transform/pos = Vector2( 583.368, -24.0459 ) -transform/scale = Vector2( 1.5, 1.5 ) - -[node name="EnemyGrunt4" parent="." instance=ExtResource( 7 )] - -transform/pos = Vector2( 878.024, -24.0459 ) -transform/scale = Vector2( 1.5, 1.5 ) - -[node name="EnemyGrunt5" parent="." instance=ExtResource( 7 )] - -transform/pos = Vector2( -374.266, -24.0459 ) -transform/scale = Vector2( 1.5, 1.5 ) - -[node name="Missile" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( -494.716, 83.0652 ) - -[node name="Missile2" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( -298.447, 258.752 ) - -[node name="Missile3" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 23.9903, 342.962 ) - -[node name="Missile4" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 337.516, 416.822 ) - -[node name="Missile5" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 744.497, 386.675 ) - -[node name="Missile6" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 972.105, 74.6563 ) - -[node name="Missile7" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 920.856, -183.098 ) - -[node name="Missile8" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 735.453, -300.671 ) - -[node name="Missile9" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( 346.56, -311.222 ) - -[node name="Missile1" parent="." instance=ExtResource( 8 )] - -transform/pos = Vector2( -380.718, -157.427 ) - diff --git a/Gun.gd b/Gun.gd index 11dce87..fa01406 100644 --- a/Gun.gd +++ b/Gun.gd @@ -1,4 +1,4 @@ -extends Sprite +extends Node2D var Bullet = load("res://Bullet.tscn") diff --git a/Kinematic.gd b/Kinematic.gd index 2b70bc1..643ff6c 100644 --- a/Kinematic.gd +++ b/Kinematic.gd @@ -52,7 +52,7 @@ class Seek: # update velocity s.velocity = tr.get_kinematic_position() - owner.get_global_pos() # update orientation - #if velocity.length() > 0: + # if velocity.length() > 0: # rotation = clamp(velocity.normalized().angle(), -max_rot_speed, max_rot_speed) else: target = null diff --git a/Player.gd b/Player.gd index 6c45090..ec7ba94 100644 --- a/Player.gd +++ b/Player.gd @@ -79,7 +79,7 @@ func _fixed_process(delta): elif Input.is_action_pressed("player_switch_down"): pass - sprite.set_rot(ship_dir.angle()) + set_rot(ship_dir.angle()) var new_vel = (ship_vel + (mov_delta * (delta * ship_accel))).clamped(ship_max_vel) var diff = new_vel - ship_vel diff --git a/Player.tscn b/Player.tscn index 3712ae3..761012a 100644 --- a/Player.tscn +++ b/Player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=1] +[gd_scene load_steps=11 format=1] [ext_resource path="res://Player.gd" type="Script" id=1] [ext_resource path="res://img/player_ship.tex" type="Texture" id=2] @@ -6,19 +6,51 @@ [ext_resource path="res://raw/exhaust.png" type="Texture" id=4] [ext_resource path="res://ThrusterScript.gd" type="Script" id=5] -[sub_resource type="RectangleShape2D" id=1] +[sub_resource type="ConvexPolygonShape2D" id=1] custom_solver_bias = 0.0 -extents = Vector2( 14.9829, 14.1367 ) +points = Vector2Array( 1.0577, -3.01906, 5.25348, -11.498, 5.42831, -1.44565, 3.76748, 13.2396 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] + +custom_solver_bias = 0.0 +points = Vector2Array( -7.94572, -1.096, -7.7709, -11.5854, -2.6136, -3.10647, 3.76748, 13.2396, -5.41078, 13.4144 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] + +custom_solver_bias = 0.0 +points = Vector2Array( -16.075, 9.1312, -16.075, 0.215181, -7.94572, -1.096, -5.41078, 13.4144 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] + +custom_solver_bias = 0.0 +points = Vector2Array( 3.76748, 13.2396, -2.6136, -3.10647, 1.0577, -3.01906 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] + +custom_solver_bias = 0.0 +points = Vector2Array( 13.645, 9.30603, 3.76748, 13.2396, 5.42831, -1.44565, 13.7324, 0.302593 ) [node name="Player" type="KinematicBody2D"] transform/scale = Vector2( 2, 2 ) input/pickable = false shapes/0/shape = SubResource( 1 ) -shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 ) +shapes/0/transform = Matrix32( 1, 0, 0, 1, 1.13636, -0.699295 ) shapes/0/trigger = false -collision/layers = 1 +shapes/1/shape = SubResource( 2 ) +shapes/1/transform = Matrix32( 1, 0, 0, 1, 1.13636, -0.699295 ) +shapes/1/trigger = false +shapes/2/shape = SubResource( 3 ) +shapes/2/transform = Matrix32( 1, 0, 0, 1, 1.13636, -0.699295 ) +shapes/2/trigger = false +shapes/3/shape = SubResource( 4 ) +shapes/3/transform = Matrix32( 1, 0, 0, 1, 1.13636, -0.699295 ) +shapes/3/trigger = false +shapes/4/shape = SubResource( 5 ) +shapes/4/transform = Matrix32( 1, 0, 0, 1, 1.13636, -0.699295 ) +shapes/4/trigger = false +collision/layers = 3 collision/mask = 1 collision/margin = 0.08 script/script = ExtResource( 1 ) @@ -29,12 +61,12 @@ texture = ExtResource( 2 ) [node name="LeftGun" type="Sprite" parent="Sprite"] -transform/pos = Vector2( -12.5228, -4.92389 ) +transform/pos = Vector2( -12.4756, -6.0575 ) script/script = ExtResource( 3 ) [node name="RightGun" type="Sprite" parent="Sprite"] -transform/pos = Vector2( 12.4714, -4.99753 ) +transform/pos = Vector2( 12.3297, -5.98944 ) script/script = ExtResource( 3 ) [node name="Engine" type="Particles2D" parent="Sprite"] @@ -184,10 +216,12 @@ drag_margin/top = 0.2 drag_margin/right = 0.2 drag_margin/bottom = 0.2 -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] -shape = SubResource( 1 ) +transform/pos = Vector2( 1.13636, -0.699295 ) +build_mode = 0 +polygon = Vector2Array( -7.7709, -11.5854, -7.94572, -1.096, -16.075, 0.215181, -16.075, 9.1312, -5.41078, 13.4144, 3.76748, 13.2396, 13.645, 9.30603, 13.7324, 0.302593, 5.42831, -1.44565, 5.25348, -11.498, 1.0577, -3.01906, -2.6136, -3.10647 ) +shape_range = Vector2( 0, 4 ) trigger = false -_update_shape_index = 0 diff --git a/export.cfg b/export.cfg new file mode 100644 index 0000000..6713e3c --- /dev/null +++ b/export.cfg @@ -0,0 +1,282 @@ +[convert_images] + +action="none" +compress_quality=0.7 +formats="png" +shrink=1.0 + +[convert_samples] + +action="none" +max_hz=44100 +trim=false + +[convert_scenes] + +convert_text_scenes=true + +[export_filter] + +filter="" +filter_exclude="" +type="resources" + +[platform:Android] + +apk_expansion/SALT="" +apk_expansion/enable=false +apk_expansion/public_key="" +architecture/arm=true +architecture/x86=false +command_line/extra_args="" +custom_package/debug="" +custom_package/release="" +debug/debugging_enabled=true +keystore/release="" +keystore/release_password="" +keystore/release_user="" +one_click_deploy/clear_previous_install=true +package/icon="" +package/name="" +package/signed=true +package/unique_name="org.godotengine.$genname" +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false +screen/immersive_mode=true +screen/orientation=0 +screen/support_large=true +screen/support_normal=true +screen/support_small=true +screen/support_xlarge=true +screen/use_32_bits_view=true +user_permissions/0="" +user_permissions/1="" +user_permissions/10="" +user_permissions/11="" +user_permissions/12="" +user_permissions/13="" +user_permissions/14="" +user_permissions/15="" +user_permissions/16="" +user_permissions/17="" +user_permissions/18="" +user_permissions/19="" +user_permissions/2="" +user_permissions/3="" +user_permissions/4="" +user_permissions/5="" +user_permissions/6="" +user_permissions/7="" +user_permissions/8="" +user_permissions/9="" +version/code=1 +version/name="1.0" + +[platform:BlackBerry 10] + +debug/debugging_enabled=true +package/category="core.games" +package/custom_template="" +package/description="Game made with Godot Engine" +package/icon="" +package/name="" +package/unique_name="com.godot.noname" +release/author="Cert. Name" +release/author_id="Cert. ID" +version/code=1 +version/name="1.0" + +[platform:HTML5] + +browser/enable_run=false +custom_package/debug="" +custom_package/release="" +debug/debugging_enabled=false +html/controls_enabled=true +html/font_family="arial,sans-serif" +html/head_include="" +html/style_include="" +html/title="" +options/memory_size=3 + +[platform:Linux X11] + +binary/64_bits=true +custom_binary/debug="" +custom_binary/release="" +debug/debugging_enabled=true +resources/bundle_dependencies_(for_optical_disc)=false +resources/pack_mode=1 + +[platform:Mac OSX] + +application/bits_mode=0 +application/copyright="" +application/icon="" +application/identifier="org.godotengine.macgame" +application/info="Made with Godot Engine" +application/name="" +application/short_version="1.0" +application/signature="godotmacgame" +application/version="1.0" +custom_package/debug="" +custom_package/release="" +debug/debugging_enabled=true +display/high_res=false + +[platform:Windows Desktop] + +binary/64_bits=true +custom_binary/debug="" +custom_binary/release="" +debug/debugging_enabled=true +resources/bundle_dependencies_(for_optical_disc)=true +resources/pack_mode=1 + +[script] + +action="compile" +encrypt_key=""