Ported platformer demo

This commit is contained in:
Juan Linietsky
2017-07-15 18:33:49 -03:00
parent e345d480cd
commit 194655c805
53 changed files with 1079 additions and 0 deletions

5
3d/platformer/bullet.gd Normal file
View File

@@ -0,0 +1,5 @@
extends RigidBody
# Member variables
var disabled = false

BIN
3d/platformer/bullet.scn Normal file

Binary file not shown.

11
3d/platformer/coin.gd Normal file
View File

@@ -0,0 +1,11 @@
extends Area
# Member variables
var taken = false
func _on_coin_body_enter(body):
if (not taken and body is preload("res://player.gd")):
get_node("anim").play("take")
taken = true

BIN
3d/platformer/coin.scn Normal file

Binary file not shown.

BIN
3d/platformer/cutout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/cutout.png-8aacc6c936bf12e889c8e11f6c4eb91c.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

View File

@@ -0,0 +1,58 @@
[gd_resource type="AudioBusLayout" load_steps=4 format=2]
[sub_resource type="AudioEffectReverb" id=1]
resource_name = "Reverb"
predelay_msec = 150.0
predelay_feedback = 150.0
room_size = 0.33
damping = 0.32
spread = 1.0
hipass = 0.9
dry = 0.0
wet = 1.0
[sub_resource type="AudioEffectAmplify" id=2]
resource_name = "Amplify"
volume_db = 0.0
[sub_resource type="AudioEffectReverb" id=3]
resource_name = "Reverb"
predelay_msec = 150.0
predelay_feedback = 150.0
room_size = 0.89
damping = 0.17
spread = 1.0
hipass = 0.08
dry = 0.0
wet = 0.36
[resource]
bus/0/name = "Master"
bus/0/solo = false
bus/0/mute = false
bus/0/bypass_fx = false
bus/0/volume_db = 0.0
bus/0/send = ""
bus/1/name = "Reverb Small"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/send = "Master"
bus/1/effect/0/effect = SubResource( 1 )
bus/1/effect/0/enabled = true
bus/1/effect/1/effect = SubResource( 2 )
bus/1/effect/1/enabled = true
bus/2/name = "Reverb Large"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = 0.0
bus/2/send = "Master"
bus/2/effect/0/effect = SubResource( 3 )
bus/2/effect/0/enabled = true

78
3d/platformer/enemy.gd Normal file
View File

@@ -0,0 +1,78 @@
extends RigidBody
# Member variables
const STATE_WALKING = 0
const STATE_DYING = 1
var prev_advance = false
var deaccel = 20.0
var accel = 5
var max_speed = 2
var rot_dir = 4
var rot_speed = 1
var dying = false
func _integrate_forces(state):
var delta = state.get_step()
var lv = state.get_linear_velocity()
var g = state.get_total_gravity()
lv += g*delta # Apply gravity
var up = -g.normalized()
if (dying):
state.set_linear_velocity(lv)
return
for i in range(state.get_contact_count()):
var cc = state.get_contact_collider_object(i)
var dp = state.get_contact_local_normal(i)
if (cc):
if (cc is preload("res://bullet.gd") and not cc.disabled):
set_mode(MODE_RIGID)
dying = true
#lv = s.get_contact_local_normal(i)*400
state.set_angular_velocity(-dp.cross(up).normalized()*33.0)
get_node("AnimationPlayer").play("impact")
get_node("AnimationPlayer").queue("explode")
set_friction(1)
cc.disabled = true
get_node("sound_hit").play()
return
var col_floor = get_node("Armature/ray_floor").is_colliding()
var col_wall = get_node("Armature/ray_wall").is_colliding()
var advance = not col_wall and col_floor
var dir = get_node("Armature").get_transform().basis[2].normalized()
var deaccel_dir = dir
if (advance):
if (dir.dot(lv) < max_speed):
lv += dir*accel*delta
deaccel_dir = dir.cross(g).normalized()
else:
if (prev_advance):
rot_dir = 1 # randf()*2.0 - 1.0
dir = Basis(up, rot_dir*rot_speed*delta).xform(dir)
get_node("Armature").set_transform(Transform().looking_at(-dir, up))
var dspeed = deaccel_dir.dot(lv)
dspeed -= deaccel*delta
if (dspeed < 0):
dspeed = 0
lv = lv - deaccel_dir*deaccel_dir.dot(lv) + deaccel_dir*dspeed
state.set_linear_velocity(lv)
prev_advance = advance
func _die():
queue_free()

BIN
3d/platformer/enemy.scn Normal file

Binary file not shown.

View File

@@ -0,0 +1,221 @@
[preset.0]
exclude_filter=""
export_filter="all_resources"
include_filter=""
name="Linux/X11"
patch_list=PoolStringArray( )
platform="Linux/X11"
runnable=true
[preset.0.options]
binary_format/64_bits=true
custom_template/debug=""
custom_template/release=""
texture_format/etc=false
texture_format/etc2=false
texture_format/s3tc=true
[preset.1]
exclude_filter=""
export_filter="all_resources"
include_filter=""
name="Android"
patch_list=PoolStringArray( )
platform="Android"
runnable=true
[preset.1.options]
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=""
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=false
user_permissions/1=false
user_permissions/10=false
user_permissions/11=false
user_permissions/12=false
user_permissions/13=false
user_permissions/14=false
user_permissions/15=false
user_permissions/16=false
user_permissions/17=false
user_permissions/18=false
user_permissions/19=false
user_permissions/2=false
user_permissions/3=false
user_permissions/4=false
user_permissions/5=false
user_permissions/6=false
user_permissions/7=false
user_permissions/8=false
user_permissions/9=false
version/code=1
version/name="1.0"

View File

@@ -0,0 +1,80 @@
extends Camera
# Member variables
var collision_exception = []
export var min_distance = 0.5
export var max_distance = 4.0
export var angle_v_adjust = 0.0
export var autoturn_ray_aperture = 25
export var autoturn_speed = 50
var max_height = 2.0
var min_height = 0
func _fixed_process(dt):
var target = get_parent().get_global_transform().origin
var pos = get_global_transform().origin
var up = Vector3(0, 1, 0)
var delta = pos - target
# Regular delta follow
# Check ranges
if (delta.length() < min_distance):
delta = delta.normalized()*min_distance
elif (delta.length() > max_distance):
delta = delta.normalized()*max_distance
# Check upper and lower height
if (delta.y > max_height):
delta.y = max_height
if (delta.y < min_height):
delta.y = min_height
# Check autoturn
var ds = PhysicsServer.space_get_direct_state(get_world().get_space())
var col_left = ds.intersect_ray(target, target + Basis(up, deg2rad(autoturn_ray_aperture)).xform(delta), collision_exception)
var col = ds.intersect_ray(target, target + delta, collision_exception)
var col_right = ds.intersect_ray(target, target + Basis(up, deg2rad(-autoturn_ray_aperture)).xform(delta), collision_exception)
if (!col.empty()):
# If main ray was occluded, get camera closer, this is the worst case scenario
delta = col.position - target
elif (!col_left.empty() and col_right.empty()):
# If only left ray is occluded, turn the camera around to the right
delta = Basis(up, deg2rad(-dt*autoturn_speed)).xform(delta)
elif (col_left.empty() and !col_right.empty()):
# If only right ray is occluded, turn the camera around to the left
delta = Basis(up, deg2rad(dt*autoturn_speed)).xform(delta)
else:
# Do nothing otherwise, left and right are occluded but center is not, so do not autoturn
pass
# Apply lookat
if (delta == Vector3()):
delta = (pos - target).normalized()*0.0001
pos = target + delta
look_at_from_pos(pos, target, up)
# Turn a little up or down
var t = get_transform()
t.basis = Basis(t.basis[0], deg2rad(angle_v_adjust))*t.basis
set_transform(t)
func _ready():
# Find collision exceptions for ray
var node = self
while(node):
if (node is RigidBody):
collision_exception.append(node.get_rid())
break
else:
node = node.get_parent()
set_fixed_process(true)
# This detaches the camera transform from the parent spatial node
set_as_toplevel(true)

BIN
3d/platformer/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/osb_down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/osb_down.png-4a1ab934f787719766862b499528d054.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/osb_fire.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/osb_fire.png-e657a73546eb75918e9d9a3fea15cf70.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/osb_jump.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/osb_jump.png-dbbef3b47abbb562ce6c81a9701121c6.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/osb_left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/osb_left.png-fc7230aeb0eec74933ed08f89b893288.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/osb_right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/osb_right.png-5cf5add2dbc1c8dde17173ac56f3a004.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/osb_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/osb_up.png-6a05b6a7bf0ede3756308a5cffdd2b9a.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

BIN
3d/platformer/panorama.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/panorama.png-e05131d3dca9fd5b03101f18fbe08995.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

186
3d/platformer/player.gd Normal file
View File

@@ -0,0 +1,186 @@
extends KinematicBody
# Member variables
const ANIM_FLOOR = 0
const ANIM_AIR_UP = 1
const ANIM_AIR_DOWN = 2
const SHOOT_TIME = 1.5
const SHOOT_SCALE = 2
const CHAR_SCALE = Vector3(0.3, 0.3, 0.3)
var facing_dir = Vector3(1, 0, 0)
var movement_dir = Vector3()
var jumping = false
var turn_speed = 40
var keep_jump_inertia = true
var air_idle_deaccel = false
var accel = 19.0
var deaccel = 14.0
var sharp_turn_threshold = 140
var max_speed = 3.1
var prev_shoot = false
var linear_velocity=Vector3()
var shoot_blend = 0
func adjust_facing(p_facing, p_target, p_step, p_adjust_rate, current_gn):
var n = p_target # Normal
var t = n.cross(current_gn).normalized()
var x = n.dot(p_facing)
var y = t.dot(p_facing)
var ang = atan2(y,x)
if (abs(ang) < 0.001): # Too small
return p_facing
var s = sign(ang)
ang = ang*s
var turn = ang*p_adjust_rate*p_step
var a
if (ang < turn):
a = ang
else:
a = turn
ang = (ang - a)*s
return (n*cos(ang) + t*sin(ang))*p_facing.length()
func _fixed_process(delta):
var lv = linear_velocity
var g = Vector3(0,-9.8,0)
# var d = 1.0 - delta*state.get_total_density()
# if (d < 0):
# d = 0
lv += g*delta # Apply gravity
var anim = ANIM_FLOOR
var up = -g.normalized() # (up is against gravity)
var vv = up.dot(lv) # Vertical velocity
var hv = lv - up*vv # Horizontal velocity
var hdir = hv.normalized() # Horizontal direction
var hspeed = hv.length() # Horizontal speed
var dir = Vector3() # Where does the player intend to walk to
var cam_xform = get_node("target/camera").get_global_transform()
if (Input.is_action_pressed("move_forward")):
dir += -cam_xform.basis[2]
if (Input.is_action_pressed("move_backwards")):
dir += cam_xform.basis[2]
if (Input.is_action_pressed("move_left")):
dir += -cam_xform.basis[0]
if (Input.is_action_pressed("move_right")):
dir += cam_xform.basis[0]
var jump_attempt = Input.is_action_pressed("jump")
var shoot_attempt = Input.is_action_pressed("shoot")
var target_dir = (dir - up*dir.dot(up)).normalized()
if (is_on_floor()):
var sharp_turn = hspeed > 0.1 and rad2deg(acos(target_dir.dot(hdir))) > sharp_turn_threshold
if (dir.length() > 0.1 and !sharp_turn):
if (hspeed > 0.001):
#linear_dir = linear_h_velocity/linear_vel
#if (linear_vel > brake_velocity_limit and linear_dir.dot(ctarget_dir) < -cos(Math::deg2rad(brake_angular_limit)))
# brake = true
#else
hdir = adjust_facing(hdir, target_dir, delta, 1.0/hspeed*turn_speed, up)
facing_dir = hdir
else:
hdir = target_dir
if (hspeed < max_speed):
hspeed += accel*delta
else:
hspeed -= deaccel*delta
if (hspeed < 0):
hspeed = 0
hv = hdir*hspeed
var mesh_xform = get_node("Armature").get_transform()
var facing_mesh = -mesh_xform.basis[0].normalized()
facing_mesh = (facing_mesh - up*facing_mesh.dot(up)).normalized()
facing_mesh = adjust_facing(facing_mesh, target_dir, delta, 1.0/hspeed*turn_speed, up)
var m3 = Basis(-facing_mesh, up, -facing_mesh.cross(up).normalized()).scaled(CHAR_SCALE)
get_node("Armature").set_transform(Transform(m3, mesh_xform.origin))
if (not jumping and jump_attempt):
vv = 7.0
jumping = true
get_node("sound_jump").play()
else:
if (vv > 0):
anim = ANIM_AIR_UP
else:
anim = ANIM_AIR_DOWN
var hs
if (dir.length() > 0.1):
hv += target_dir*(accel*0.2)*delta
if (hv.length() > max_speed):
hv = hv.normalized()*max_speed
else:
if (air_idle_deaccel):
hspeed = hspeed - (deaccel*0.2)*delta
if (hspeed < 0):
hspeed = 0
hv = hdir*hspeed
if (jumping and vv < 0):
jumping = false
lv = hv + up*vv
if (is_on_floor()):
movement_dir = lv
linear_velocity = move_and_slide(lv,-g.normalized())
if (shoot_blend > 0):
shoot_blend -= delta*SHOOT_SCALE
if (shoot_blend < 0):
shoot_blend = 0
if (shoot_attempt and not prev_shoot):
shoot_blend = SHOOT_TIME
var bullet = preload("res://bullet.scn").instance()
bullet.set_transform(get_node("Armature/bullet").get_global_transform().orthonormalized())
get_parent().add_child(bullet)
bullet.set_linear_velocity(get_node("Armature/bullet").get_global_transform().basis[2].normalized()*20)
bullet.add_collision_exception_with(self) # Add it to bullet
get_node("sound_shoot").play()
prev_shoot = shoot_attempt
if (is_on_floor()):
get_node("AnimationTreePlayer").blend2_node_set_amount("walk", hspeed/max_speed)
get_node("AnimationTreePlayer").transition_node_set_current("state", anim)
get_node("AnimationTreePlayer").blend2_node_set_amount("gun", min(shoot_blend, 1.0))
# state.set_angular_velocity(Vector3())
func _ready():
get_node("AnimationTreePlayer").set_active(true)

BIN
3d/platformer/player.scn Normal file

Binary file not shown.

View File

@@ -0,0 +1,59 @@
config_version=3
[application]
name="Platformer 3D"
main_scene="res://stage.scn"
[input]
ui_accept=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
ui_select=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
]
ui_cancel=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
]
ui_focus_next=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"unicode":0,"echo":false,"script":null)
]
ui_focus_prev=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"unicode":0,"echo":false,"script":null)
]
ui_left=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
]
ui_right=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
]
ui_up=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
]
ui_down=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
]
ui_page_up=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777235,"unicode":0,"echo":false,"script":null)
]
ui_page_down=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777236,"unicode":0,"echo":false,"script":null)
]
move_forward=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null)
]
move_backwards=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null)
]
move_left=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null)
]
move_right=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null)
]
jump=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
]
shoot=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"unicode":0,"echo":false,"script":null)
]
[memory]
multithread/thread_rid_pool_prealloc=60
[rendering]
quality/msaa=2

Binary file not shown.

View File

@@ -0,0 +1,16 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/robot_walk.wav-4313e7d5f563e62e3923080b14a79c15.sample"
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=true
compress/mode=0

Binary file not shown.

7
3d/platformer/sb.cube Normal file
View File

@@ -0,0 +1,7 @@
sb_left.png
sb_right.png
sb_bottom.png
sb_top.png
sb_back.png
sb_front.png

BIN
3d/platformer/shine.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

View File

@@ -0,0 +1,24 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/shine.png-a8253c1d2dc8acbf187823f695c13207.s3tc.stex"
path.etc2="res://.import/shine.png-a8253c1d2dc8acbf187823f695c13207.etc2.stex"
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=1
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=false

Binary file not shown.

View File

@@ -0,0 +1,16 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/sound_coin.wav-b4defacd1a1eab95585c7b5095506878.sample"
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
compress/mode=0

Binary file not shown.

View File

@@ -0,0 +1,16 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/sound_explode.wav-23e94be75a4346bffb517c7e07035977.sample"
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
compress/mode=0

BIN
3d/platformer/sound_hit.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,16 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/sound_hit.wav-d8455980ada2d4a9a73508948d7317cc.sample"
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
compress/mode=0

Binary file not shown.

View File

@@ -0,0 +1,16 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/sound_jump.wav-4966d1f327e26a176b56ab335c03b5e1.sample"
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
compress/mode=0

Binary file not shown.

View File

@@ -0,0 +1,16 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/sound_shoot.wav-f0f26619cba21d411b53ad23b8788116.sample"
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
compress/mode=0

BIN
3d/platformer/stage.scn Normal file

Binary file not shown.

BIN
3d/platformer/texture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/texture.png-77dc6ecaf884a35cd9dbaf886cacc46d.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=1
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=1
process/fix_alpha_border=false
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=false

BIN
3d/platformer/texturemr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,24 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/texturemr.png-0568a8b09834741143da53ce460e36f1.s3tc.stex"
path.etc2="res://.import/texturemr.png-0568a8b09834741143da53ce460e36f1.etc2.stex"
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=false

BIN
3d/platformer/tiles.res Normal file

Binary file not shown.

BIN
3d/platformer/tiles.scn Normal file

Binary file not shown.