add fire cone for small ship, also make player shit get hit by boolets

This commit is contained in:
Robin Hübner 2017-08-12 23:54:09 +02:00
parent e29ab412b5
commit a8fd5022fc
9 changed files with 384 additions and 84 deletions

View File

@ -48,7 +48,7 @@ func _fixed_process(delta):
if is_colliding(): if is_colliding():
var e = get_collider() var e = get_collider()
var e_t = e.type() 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) on_impact(e)
if lifetime <= 0: if lifetime <= 0:

View File

@ -1,5 +1,8 @@
extends KinematicBody2D extends KinematicBody2D
onready var area = get_node("Area2D")
onready var gun = get_node("Ship/Gun")
var ExplosionEffect = load("res://ExplosionEffect.tscn") var ExplosionEffect = load("res://ExplosionEffect.tscn")
const km = preload("Kinematic.gd") const km = preload("Kinematic.gd")
@ -16,6 +19,8 @@ var steering
var s_seek var s_seek
var s_arrive var s_arrive
var player_in_cone = false
func _ready(): func _ready():
var t = get_tree().get_root().get_node("Game/MinimapControl").register_entity(self) var t = get_tree().get_root().get_node("Game/MinimapControl").register_entity(self)
set_fixed_process(true) set_fixed_process(true)
@ -30,6 +35,18 @@ func _ready():
s_seek.set_target(player) s_seek.set_target(player)
s_arrive.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(): func on_explode():
# create explosion effect # create explosion effect
var new_ee = ExplosionEffect.instance() var new_ee = ExplosionEffect.instance()
@ -48,6 +65,9 @@ func _fixed_process(delta):
s_arrive.get_steering(steering) s_arrive.get_steering(steering)
cur_kinematic.update(steering, delta) cur_kinematic.update(steering, delta)
if player_in_cone:
gun.fire(delta, cur_kinematic.velocity * delta, cur_kinematic.get_orientation())
if health <= 0: if health <= 0:
on_explode() on_explode()

View File

@ -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://EnemyGrunt.gd" type="Script" id=1]
[ext_resource path="res://raw/enemy_grunt.png" type="Texture" id=2] [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://raw/exhaust.png" type="Texture" id=3]
[ext_resource path="res://Gun.gd" type="Script" id=4]
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0 custom_solver_bias = 0.0
extents = Vector2( 8.55915, 8.40247 ) 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"] [node name="EnemyGrunt" type="KinematicBody2D"]
transform/pos = Vector2( 0.12851, 0 ) transform/pos = Vector2( 0.12851, 0 )
@ -28,11 +34,11 @@ shape = SubResource( 1 )
trigger = false trigger = false
_update_shape_index = 0 _update_shape_index = 0
[node name="Sprite" type="Sprite" parent="."] [node name="Ship" type="Sprite" parent="."]
texture = ExtResource( 2 ) texture = ExtResource( 2 )
[node name="Particles2D" type="Particles2D" parent="Sprite"] [node name="Particles2D" type="Particles2D" parent="Ship"]
transform/pos = Vector2( 0, -5.43192 ) transform/pos = Vector2( 0, -5.43192 )
transform/rot = 180.0 transform/rot = 180.0
@ -58,4 +64,28 @@ params/hue_variation = 0.0
params/anim_speed_scale = 1.0 params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.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

View File

@ -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://Game.gd" type="Script" id=1]
[ext_resource path="res://Minimap.tscn" type="PackedScene" id=2] [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://Player.tscn" type="PackedScene" id=5]
[ext_resource path="res://raw/space.png" type="Texture" id=6] [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://EnemyGrunt.tscn" type="PackedScene" id=7]
[ext_resource path="res://Missile.tscn" type="PackedScene" id=8]
[node name="Game" type="Node"] [node name="Game" type="Node"]
@ -72,69 +71,4 @@ region_rect = Rect2( 0, 0, 8192, 8192 )
transform/pos = Vector2( 127.878, -20.3627 ) transform/pos = Vector2( 127.878, -20.3627 )
transform/scale = Vector2( 1.5, 1.5 ) 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 )

2
Gun.gd
View File

@ -1,4 +1,4 @@
extends Sprite extends Node2D
var Bullet = load("res://Bullet.tscn") var Bullet = load("res://Bullet.tscn")

View File

@ -79,7 +79,7 @@ func _fixed_process(delta):
elif Input.is_action_pressed("player_switch_down"): elif Input.is_action_pressed("player_switch_down"):
pass 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 new_vel = (ship_vel + (mov_delta * (delta * ship_accel))).clamped(ship_max_vel)
var diff = new_vel - ship_vel var diff = new_vel - ship_vel

View File

@ -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://Player.gd" type="Script" id=1]
[ext_resource path="res://img/player_ship.tex" type="Texture" id=2] [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://raw/exhaust.png" type="Texture" id=4]
[ext_resource path="res://ThrusterScript.gd" type="Script" id=5] [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 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"] [node name="Player" type="KinematicBody2D"]
transform/scale = Vector2( 2, 2 ) transform/scale = Vector2( 2, 2 )
input/pickable = false input/pickable = false
shapes/0/shape = SubResource( 1 ) 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 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/mask = 1
collision/margin = 0.08 collision/margin = 0.08
script/script = ExtResource( 1 ) script/script = ExtResource( 1 )
@ -29,12 +61,12 @@ texture = ExtResource( 2 )
[node name="LeftGun" type="Sprite" parent="Sprite"] [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 ) script/script = ExtResource( 3 )
[node name="RightGun" type="Sprite" parent="Sprite"] [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 ) script/script = ExtResource( 3 )
[node name="Engine" type="Particles2D" parent="Sprite"] [node name="Engine" type="Particles2D" parent="Sprite"]
@ -184,10 +216,12 @@ drag_margin/top = 0.2
drag_margin/right = 0.2 drag_margin/right = 0.2
drag_margin/bottom = 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 trigger = false
_update_shape_index = 0

282
export.cfg Normal file
View File

@ -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=""