From 2a5aa7dc898b57d58e941d24b03a1d83ff9ddd81 Mon Sep 17 00:00:00 2001 From: dusoleil Date: Fri, 22 Jul 2022 14:31:20 -0400 Subject: chiken --- .gitignore | 2 + Chicken.gd | 64 ++++++ Chicken.png | Bin 0 -> 2649 bytes Chicken.png.import | 37 ++++ Chicken.tscn | 605 ++++++++++++++++++++++++++++++++++++++++++++++++++++ ChickenAnimation.gd | 4 + Ground.png | Bin 0 -> 1183 bytes Ground.png.import | 37 ++++ Main.gd | 4 + Main.tscn | 133 ++++++++++++ MouseInput.gd | 11 + MouseInput.tscn | 6 + Player.gd | 61 ++++++ Player.tscn | 14 ++ beak.tres | 4 + chicken.pck | Bin 0 -> 75280 bytes chicken.tres | 8 + default_env.tres | 7 + fence.png | Bin 0 -> 6484 bytes fence.png.import | 37 ++++ fence.tres | 9 + icon.png | Bin 0 -> 3305 bytes icon.png.import | 35 +++ project.godot | 101 +++++++++ 24 files changed, 1179 insertions(+) create mode 100644 Chicken.gd create mode 100644 Chicken.png create mode 100644 Chicken.png.import create mode 100644 Chicken.tscn create mode 100644 ChickenAnimation.gd create mode 100644 Ground.png create mode 100644 Ground.png.import create mode 100644 Main.gd create mode 100644 Main.tscn create mode 100644 MouseInput.gd create mode 100644 MouseInput.tscn create mode 100644 Player.gd create mode 100644 Player.tscn create mode 100644 beak.tres create mode 100644 chicken.pck create mode 100644 chicken.tres create mode 100644 default_env.tres create mode 100644 fence.png create mode 100644 fence.png.import create mode 100644 fence.tres create mode 100644 icon.png create mode 100644 icon.png.import create mode 100644 project.godot diff --git a/.gitignore b/.gitignore index 4f48ad7..c967ef0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ export_presets.cfg # Mono-specific ignores .mono/ data_*/ + +*.exe diff --git a/Chicken.gd b/Chicken.gd new file mode 100644 index 0000000..996c2eb --- /dev/null +++ b/Chicken.gd @@ -0,0 +1,64 @@ +extends KinematicBody + +export var rot_chance = 5.0 +export var rot_range = PI / 4.0 +export var mov_chance = 5.0 +export var mov_speed = 1.0 +export var mov_length_min = 1.0 +export var mov_length_max = 5.0 +export var flap_chance = 5.0 +export var squak_chance = 5.0 +export var peck_chance = 5.0 + +onready var anim = $AnimationTree + +func roll_die(chance): + return (randf() * 100) <= chance + +func _physics_process(delta): + match anim.wings.get_current_node(): + "IDLE": + if roll_die(flap_chance): + anim.wings.travel("FLAP") + "FLAP": + pass + match anim.state.get_current_node(): + "IDLE": + state_idle(delta) + "MOVING": + state_moving(delta) + "SQUACK": + pass + "PECK": + pass + +func state_idle(delta): + if roll_die(rot_chance): + var ang = randf() * rot_range + rotate(Vector3.UP, ang) + if roll_die(mov_chance): + anim.state.travel("MOVING") + var dist = lerp(mov_length_min, mov_length_max, randf()) + mov_lerp_pos = 0.0 + mov_lerp_step = (mov_speed * delta) / dist + var rotation = Transform(self.rotation, Vector3.ZERO) + var forward = rotation * Vector3.FORWARD + mov_lerp_start = translation + mov_lerp_target = translation + (forward * dist) + elif roll_die(squak_chance): + anim.state.travel("SQUACK") + elif roll_die(peck_chance): + anim.state.travel("PECK") + +var mov_lerp_start = Vector3.ZERO +var mov_lerp_target = Vector3.ZERO +var mov_lerp_step = 0.0 +var mov_lerp_pos = 0.0 +func state_moving(_delta): + if mov_lerp_pos >= 1.0: + anim.state.travel("IDLE") + return + mov_lerp_pos += mov_lerp_step + mov_lerp_pos = min(mov_lerp_pos, 1.0) + var pos = lerp(mov_lerp_start, mov_lerp_target, mov_lerp_pos) + pos = move_and_slide(pos - translation, Vector3.UP) diff --git a/Chicken.png b/Chicken.png new file mode 100644 index 0000000..9abc2d2 Binary files /dev/null and b/Chicken.png differ diff --git a/Chicken.png.import b/Chicken.png.import new file mode 100644 index 0000000..183f344 --- /dev/null +++ b/Chicken.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/Chicken.png-57c74d64dde4deff6196acc88252cdcf.s3tc.stex" +path.etc2="res://.import/Chicken.png-57c74d64dde4deff6196acc88252cdcf.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://Chicken.png" +dest_files=[ "res://.import/Chicken.png-57c74d64dde4deff6196acc88252cdcf.s3tc.stex", "res://.import/Chicken.png-57c74d64dde4deff6196acc88252cdcf.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=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=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Chicken.tscn b/Chicken.tscn new file mode 100644 index 0000000..06d1bdb --- /dev/null +++ b/Chicken.tscn @@ -0,0 +1,605 @@ +[gd_scene load_steps=49 format=2] + +[ext_resource path="res://chicken.tres" type="Material" id=1] +[ext_resource path="res://beak.tres" type="Material" id=2] +[ext_resource path="res://Chicken.gd" type="Script" id=3] +[ext_resource path="res://ChickenAnimation.gd" type="Script" id=4] + +[sub_resource type="SphereMesh" id=1] + +[sub_resource type="SphereMesh" id=2] + +[sub_resource type="CubeMesh" id=3] + +[sub_resource type="CubeMesh" id=4] + +[sub_resource type="Animation" id=5] +length = 0.001 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly/LeftWingPivot:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( -0.995677, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Belly/LeftWingPivot:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Belly/RightWingPivot:translation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0.996, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Belly/RightWingPivot:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Belly/HeadPivot:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Belly/HeadPivot/Head/BeakTopPivot:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Belly/HeadPivot/Head/BeakBottomPivot:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Belly:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Belly:translation") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=6] +resource_name = "flappybird" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly/LeftWingPivot:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1.51572, 0.450625, 1, 1.51572 ), +"update": 0, +"values": [ Vector3( -0.995677, 0, 0 ), Vector3( -0.995677, 0.0845447, 0 ), Vector3( -0.995677, -0.127906, 0 ), Vector3( -0.995677, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Belly/LeftWingPivot:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1.51572, 0.450625, 1, 1.51572 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0, -23.821 ), Vector3( 0, 0, 21.829 ), Vector3( 0, 0, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Belly/RightWingPivot:translation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1.51572, 0.450625, 1, 1.51572 ), +"update": 0, +"values": [ Vector3( 0.996, 0, 0 ), Vector3( 0.996, 0.085, 0 ), Vector3( 0.996, -0.128, 0 ), Vector3( 0.996, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Belly/RightWingPivot:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1.51572, 0.450625, 1, 1.51572 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0, 23.821 ), Vector3( 0, 0, -21.829 ), Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=9] +resource_name = "hop" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 0.378929, 3.13834, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0.510995, 0 ), Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=10] +resource_name = "idle_bottom" +length = 0.001 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly/LeftWingPivot:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( -0.995677, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Belly/LeftWingPivot:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Belly/RightWingPivot:translation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0.996, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Belly/RightWingPivot:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=11] +resource_name = "idle_hop" +length = 0.001 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=12] +resource_name = "idle_top" +length = 0.001 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly/HeadPivot:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Belly/HeadPivot/Head/BeakTopPivot:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Belly/HeadPivot/Head/BeakBottomPivot:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Belly:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=7] +resource_name = "peck" +length = 3.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly/HeadPivot:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 1.2, 1.4, 1.6, 1.8, 3 ), +"transitions": PoolRealArray( 0.707107, 0.594604, 0.594604, 0.594604, 0.594604, 0.757858, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( -18.871, 0, 0 ), Vector3( 3.071, 0, 0 ), Vector3( -18.871, 0, 0 ), Vector3( 3.071, 0, 0 ), Vector3( -18.871, 0, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Belly:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2, 3 ), +"transitions": PoolRealArray( 0.707107, 1, 0.707107, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( -29, 0, 0 ), Vector3( -29, 0, 0 ), Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="Animation" id=8] +resource_name = "squack" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Belly/HeadPivot:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 0.450625, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 30.215, 0, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Belly/HeadPivot/Head/BeakTopPivot:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 0.450625, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 26.24, 0, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Belly/HeadPivot/Head/BeakBottomPivot:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 0.450625, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( -18.246, 0, 0 ), Vector3( 0, 0, 0 ) ] +} + +[sub_resource type="AnimationNodeAdd2" id=18] + +[sub_resource type="AnimationNodeAdd2" id=42] + +[sub_resource type="AnimationNodeAnimation" id=43] +animation = "idle_top" + +[sub_resource type="AnimationNodeAnimation" id=44] +animation = "idle_hop" + +[sub_resource type="AnimationNodeBlendTree" id=45] +graph_offset = Vector2( -573, -15 ) +nodes/Add2/node = SubResource( 42 ) +nodes/Add2/position = Vector2( 100, 140 ) +nodes/Animation/node = SubResource( 44 ) +nodes/Animation/position = Vector2( -140, 100 ) +"nodes/Animation 2/node" = SubResource( 43 ) +"nodes/Animation 2/position" = Vector2( -160, 240 ) +node_connections = [ "output", 0, "Add2", "Add2", 0, "Animation", "Add2", 1, "Animation 2" ] + +[sub_resource type="AnimationNodeAnimation" id=39] +animation = "hop" + +[sub_resource type="AnimationNodeTimeScale" id=40] + +[sub_resource type="AnimationNodeBlendTree" id=41] +graph_offset = Vector2( -427, -35 ) +nodes/Animation/node = SubResource( 39 ) +nodes/Animation/position = Vector2( -120, 120 ) +nodes/TimeScale/node = SubResource( 40 ) +nodes/TimeScale/position = Vector2( 100, 140 ) +node_connections = [ "output", 0, "TimeScale", "TimeScale", 0, "Animation" ] + +[sub_resource type="AnimationNodeAnimation" id=46] +animation = "peck" + +[sub_resource type="AnimationNodeTimeScale" id=47] + +[sub_resource type="AnimationNodeBlendTree" id=48] +graph_offset = Vector2( -864, -12 ) +nodes/Animation/node = SubResource( 46 ) +nodes/Animation/position = Vector2( -140, 140 ) +nodes/TimeScale/node = SubResource( 47 ) +nodes/TimeScale/position = Vector2( 100, 140 ) +node_connections = [ "output", 0, "TimeScale", "TimeScale", 0, "Animation" ] + +[sub_resource type="AnimationNodeAnimation" id=49] +animation = "squack" + +[sub_resource type="AnimationNodeTimeScale" id=50] + +[sub_resource type="AnimationNodeBlendTree" id=51] +graph_offset = Vector2( -290, -3 ) +nodes/Animation/node = SubResource( 49 ) +nodes/Animation/position = Vector2( -60, 160 ) +nodes/TimeScale/node = SubResource( 50 ) +nodes/TimeScale/position = Vector2( 140, 140 ) +node_connections = [ "output", 0, "TimeScale", "TimeScale", 0, "Animation" ] + +[sub_resource type="AnimationNodeStateMachineTransition" id=52] + +[sub_resource type="AnimationNodeStateMachineTransition" id=53] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id=54] + +[sub_resource type="AnimationNodeStateMachineTransition" id=55] +switch_mode = 2 +auto_advance = true + +[sub_resource type="AnimationNodeStateMachineTransition" id=56] +switch_mode = 2 +auto_advance = true + +[sub_resource type="AnimationNodeStateMachineTransition" id=57] + +[sub_resource type="AnimationNodeStateMachine" id=58] +states/IDLE/node = SubResource( 45 ) +states/IDLE/position = Vector2( 657, 146 ) +states/MOVING/node = SubResource( 41 ) +states/MOVING/position = Vector2( 657, 268 ) +states/PECK/node = SubResource( 48 ) +states/PECK/position = Vector2( 395, 146 ) +states/SQUACK/node = SubResource( 51 ) +states/SQUACK/position = Vector2( 952, 146 ) +transitions = [ "IDLE", "MOVING", SubResource( 52 ), "MOVING", "IDLE", SubResource( 53 ), "IDLE", "SQUACK", SubResource( 54 ), "SQUACK", "IDLE", SubResource( 55 ), "PECK", "IDLE", SubResource( 56 ), "IDLE", "PECK", SubResource( 57 ) ] +start_node = "IDLE" + +[sub_resource type="AnimationNodeAnimation" id=59] +animation = "flappybird" + +[sub_resource type="AnimationNodeTimeScale" id=60] + +[sub_resource type="AnimationNodeBlendTree" id=61] +graph_offset = Vector2( -405, 10 ) +nodes/Animation/node = SubResource( 59 ) +nodes/Animation/position = Vector2( -66.6667, 132.5 ) +nodes/TimeScale/node = SubResource( 60 ) +nodes/TimeScale/position = Vector2( 120, 140 ) +node_connections = [ "output", 0, "TimeScale", "TimeScale", 0, "Animation" ] + +[sub_resource type="AnimationNodeAnimation" id=62] +animation = "idle_bottom" + +[sub_resource type="AnimationNodeStateMachineTransition" id=63] + +[sub_resource type="AnimationNodeStateMachineTransition" id=64] +switch_mode = 2 +auto_advance = true + +[sub_resource type="AnimationNodeStateMachine" id=65] +states/FLAP/node = SubResource( 61 ) +states/FLAP/position = Vector2( 904, 144 ) +states/IDLE/node = SubResource( 62 ) +states/IDLE/position = Vector2( 674, 144 ) +transitions = [ "IDLE", "FLAP", SubResource( 63 ), "FLAP", "IDLE", SubResource( 64 ) ] +start_node = "IDLE" + +[sub_resource type="AnimationNodeBlendTree" id=16] +graph_offset = Vector2( -847.136, -609 ) +nodes/Add2/node = SubResource( 18 ) +nodes/Add2/position = Vector2( 80, -480 ) +nodes/output/position = Vector2( 300, -480 ) +nodes/state/node = SubResource( 58 ) +nodes/state/position = Vector2( -220, -380 ) +nodes/wings/node = SubResource( 65 ) +nodes/wings/position = Vector2( -220, -520 ) +node_connections = [ "output", 0, "Add2", "Add2", 0, "wings", "Add2", 1, "state" ] + +[sub_resource type="AnimationNodeStateMachinePlayback" id=66] + +[sub_resource type="AnimationNodeStateMachinePlayback" id=38] + +[sub_resource type="SphereShape" id=67] + +[node name="Chicken" type="KinematicBody"] +collision_layer = 4 +collision_mask = 5 +script = ExtResource( 3 ) + +[node name="Belly" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = ExtResource( 1 ) + +[node name="HeadPivot" type="Spatial" parent="Belly"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.657827, -0.749514 ) + +[node name="Head" type="MeshInstance" parent="Belly/HeadPivot"] +transform = Transform( 0.6, 0, 0, 0, 0.55438, 0.229484, 0, -0.229484, 0.55438, 0, 0.388057, -0.339644 ) +mesh = SubResource( 2 ) +skeleton = NodePath("../../..") +material/0 = ExtResource( 1 ) + +[node name="BeakTopPivot" type="Spatial" parent="Belly/HeadPivot/Head"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.19209e-07, -0.965512 ) + +[node name="BeakTop" type="MeshInstance" parent="Belly/HeadPivot/Head/BeakTopPivot"] +transform = Transform( 0.3, 0, 0, 0, 0.1, 0, 0, 0, 0.5, 0, 0, -0.452 ) +mesh = SubResource( 3 ) +skeleton = NodePath("../..") +material/0 = ExtResource( 2 ) + +[node name="BeakBottomPivot" type="Spatial" parent="Belly/HeadPivot/Head"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.189294, -0.965511 ) + +[node name="BeakBottom" type="MeshInstance" parent="Belly/HeadPivot/Head/BeakBottomPivot"] +transform = Transform( 0.3, 0, 0, 0, 0.1, 0, 0, 0, 0.5, 0, 0, -0.452 ) +mesh = SubResource( 3 ) +skeleton = NodePath("../..") +material/0 = ExtResource( 2 ) + +[node name="LeftWingPivot" type="Spatial" parent="Belly"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.995677, 0, 0 ) + +[node name="LeftWing" type="MeshInstance" parent="Belly/LeftWingPivot"] +transform = Transform( 0.5, 0, 0, 0, 0.1, 0, 0, 0, 0.3, -0.377, 0, 0 ) +mesh = SubResource( 4 ) +skeleton = NodePath("../../..") +material/0 = ExtResource( 1 ) + +[node name="RightWingPivot" type="Spatial" parent="Belly"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.996, 0, 0 ) + +[node name="RightWing" type="MeshInstance" parent="Belly/RightWingPivot"] +transform = Transform( 0.5, 0, 0, 0, 0.1, 0, 0, 0, 0.3, 0.352, 0, 0 ) +mesh = SubResource( 4 ) +skeleton = NodePath("../../..") +material/0 = ExtResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 5 ) +anims/flappybird = SubResource( 6 ) +anims/hop = SubResource( 9 ) +anims/idle_bottom = SubResource( 10 ) +anims/idle_hop = SubResource( 11 ) +anims/idle_top = SubResource( 12 ) +anims/peck = SubResource( 7 ) +anims/squack = SubResource( 8 ) + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 16 ) +anim_player = NodePath("../AnimationPlayer") +active = true +parameters/Add2/add_amount = 1.0 +parameters/state/playback = SubResource( 66 ) +parameters/state/IDLE/Add2/add_amount = 0 +parameters/state/MOVING/TimeScale/scale = 1.0 +parameters/state/PECK/TimeScale/scale = 2.0 +parameters/state/SQUACK/TimeScale/scale = 1.0 +parameters/wings/playback = SubResource( 38 ) +parameters/wings/FLAP/TimeScale/scale = 2.0 +script = ExtResource( 4 ) + +[node name="CollisionShape" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0.5, -0.5 ) +shape = SubResource( 67 ) diff --git a/ChickenAnimation.gd b/ChickenAnimation.gd new file mode 100644 index 0000000..a1298a0 --- /dev/null +++ b/ChickenAnimation.gd @@ -0,0 +1,4 @@ +extends AnimationTree + +var wings = self["parameters/wings/playback"] +var state = self["parameters/state/playback"] diff --git a/Ground.png b/Ground.png new file mode 100644 index 0000000..028df53 Binary files /dev/null and b/Ground.png differ diff --git a/Ground.png.import b/Ground.png.import new file mode 100644 index 0000000..0bf16db --- /dev/null +++ b/Ground.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/Ground.png-a1e7165254050f6723978f7d8348ce00.s3tc.stex" +path.etc2="res://.import/Ground.png-a1e7165254050f6723978f7d8348ce00.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://Ground.png" +dest_files=[ "res://.import/Ground.png-a1e7165254050f6723978f7d8348ce00.s3tc.stex", "res://.import/Ground.png-a1e7165254050f6723978f7d8348ce00.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=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=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Main.gd b/Main.gd new file mode 100644 index 0000000..68447ee --- /dev/null +++ b/Main.gd @@ -0,0 +1,4 @@ +extends Node + +func _ready(): + randomize() diff --git a/Main.tscn b/Main.tscn new file mode 100644 index 0000000..b57a581 --- /dev/null +++ b/Main.tscn @@ -0,0 +1,133 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://Main.gd" type="Script" id=1] +[ext_resource path="res://Ground.png" type="Texture" id=2] +[ext_resource path="res://Player.tscn" type="PackedScene" id=3] +[ext_resource path="res://Chicken.tscn" type="PackedScene" id=4] +[ext_resource path="res://fence.tres" type="Material" id=5] + +[sub_resource type="BoxShape" id=1] +extents = Vector3( 25, 1, 25 ) + +[sub_resource type="CubeMesh" id=3] +size = Vector3( 50, 2, 50 ) + +[sub_resource type="SpatialMaterial" id=4] +albedo_color = Color( 0.0352941, 0.301961, 0.00392157, 1 ) +albedo_texture = ExtResource( 2 ) +uv1_triplanar = true + +[sub_resource type="CubeMesh" id=5] + +[sub_resource type="BoxShape" id=7] +extents = Vector3( 5, 1, 0.05 ) + +[sub_resource type="BoxShape" id=6] +extents = Vector3( 0.05, 1, 5 ) + +[node name="Main" type="Node"] +script = ExtResource( 1 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( -0.586145, -0.773475, 0.241185, -0.715288, 0.633826, 0.294324, -0.380522, 0, -0.924772, 6.17321, 8.45611, -11.9247 ) + +[node name="Ground" type="StaticBody" parent="."] +collision_mask = 0 + +[node name="CollisionShape" type="CollisionShape" parent="Ground"] +shape = SubResource( 1 ) + +[node name="MeshInstance" type="MeshInstance" parent="Ground"] +mesh = SubResource( 3 ) +material/0 = SubResource( 4 ) + +[node name="Fence" type="StaticBody" parent="."] +collision_mask = 0 + +[node name="MeshInstance" type="MeshInstance" parent="Fence"] +transform = Transform( 5, 0, 0, 0, 1, 0, 0, 0, 0.1, 0, 2, -5 ) +mesh = SubResource( 5 ) +material/0 = ExtResource( 5 ) + +[node name="MeshInstance2" type="MeshInstance" parent="Fence"] +transform = Transform( 5, 0, 0, 0, 1, 0, 0, 0, 0.1, 0, 2, 5 ) +mesh = SubResource( 5 ) +material/0 = ExtResource( 5 ) + +[node name="MeshInstance3" type="MeshInstance" parent="Fence"] +transform = Transform( 0.1, 0, 0, 0, 1, 0, 0, 0, 5, -5, 2, 0 ) +mesh = SubResource( 5 ) +material/0 = ExtResource( 5 ) + +[node name="MeshInstance4" type="MeshInstance" parent="Fence"] +transform = Transform( 0.1, 0, 0, 0, 1, 0, 0, 0, 5, 5, 2, 0 ) +mesh = SubResource( 5 ) +material/0 = ExtResource( 5 ) + +[node name="CollisionShape" type="CollisionShape" parent="Fence"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -5 ) +shape = SubResource( 7 ) + +[node name="CollisionShape2" type="CollisionShape" parent="Fence"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 5 ) +shape = SubResource( 7 ) + +[node name="CollisionShape3" type="CollisionShape" parent="Fence"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 2, 0 ) +shape = SubResource( 6 ) + +[node name="CollisionShape4" type="CollisionShape" parent="Fence"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 2, 0 ) +shape = SubResource( 6 ) + +[node name="Player" parent="." instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 0.968718, 0.248166, 0, -0.248166, 0.968718, 0, 5.05733, 7 ) + +[node name="Chicken" parent="." instance=ExtResource( 4 )] +transform = Transform( 0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 1.25, 0 ) +rot_chance = 10.0 +flap_chance = 2.0 +squak_chance = 2.0 +peck_chance = 3.0 + +[node name="Chicken2" parent="." instance=ExtResource( 4 )] +transform = Transform( -0.157042, 0, 0.19452, 0, 0.25, 0, -0.19452, 0, -0.157042, 2.50059, 1.25, -2.25906 ) +rot_chance = 10.0 +flap_chance = 2.0 +squak_chance = 2.0 +peck_chance = 3.0 + +[node name="Chicken3" parent="." instance=ExtResource( 4 )] +transform = Transform( 0.181922, 0, -0.171477, 0, 0.25, 0, 0.171477, 0, 0.181922, 0, 1.25, -2.79105 ) +rot_chance = 10.0 +flap_chance = 2.0 +squak_chance = 2.0 +peck_chance = 3.0 + +[node name="Chicken4" parent="." instance=ExtResource( 4 )] +transform = Transform( 0.177798, 0, 0.175749, 0, 0.25, 0, -0.175749, 0, 0.177798, -3.31942, 1.25, 0 ) +rot_chance = 10.0 +flap_chance = 2.0 +squak_chance = 2.0 +peck_chance = 3.0 + +[node name="Chicken5" parent="." instance=ExtResource( 4 )] +transform = Transform( -0.24986, 0, 0.00835422, 0, 0.25, 0, -0.00835422, 0, -0.24986, -1.33975, 1.25, -1.28165 ) +rot_chance = 10.0 +flap_chance = 2.0 +squak_chance = 2.0 +peck_chance = 3.0 + +[node name="UI" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Controls" type="Label" parent="UI"] +margin_right = 166.0 +margin_bottom = 82.0 +custom_colors/font_color = Color( 0.00784314, 0.0392157, 0.811765, 1 ) +text = "move: WASD or Left Stick +look: Arrows or Right Stick +up: Space or Right Trigger +down: Ctrl or Left Trigger +Release Cursor: Esc" diff --git a/MouseInput.gd b/MouseInput.gd new file mode 100644 index 0000000..e47e3c7 --- /dev/null +++ b/MouseInput.gd @@ -0,0 +1,11 @@ +extends Node + +var mouse_movement = Vector2.ZERO + +func get_mouse_movement(): + var ret = mouse_movement + mouse_movement -= ret + return ret + +func add_mouse_movement(relative): + mouse_movement += relative diff --git a/MouseInput.tscn b/MouseInput.tscn new file mode 100644 index 0000000..9dd303b --- /dev/null +++ b/MouseInput.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://MouseInput.gd" type="Script" id=1] + +[node name="Node" type="Node"] +script = ExtResource( 1 ) diff --git a/Player.gd b/Player.gd new file mode 100644 index 0000000..99c6abf --- /dev/null +++ b/Player.gd @@ -0,0 +1,61 @@ +extends KinematicBody + +export var speed = 20 +export var ang_speed = PI +export var mouse_dpi = 0.2 +export var pitch_min = -0.8 +export var pitch_max = 0.8 + +func joystick(neg_x: String,pos_x: String,neg_y: String,pos_y: String): + var joystick = Input.get_vector(neg_x,pos_x,neg_y,pos_y) + var joystrength = abs(joystick.length()) + if joystick != Vector2.ZERO: + joystick = joystick.normalized() + return Vector3(joystick.x,joystick.y,joystrength) + +func _physics_process(delta): + var d_ang_speed = ang_speed * delta + + var rotation = Transform(self.rotation, Vector3.ZERO) + var up = rotation * Vector3.UP + var forward = rotation * Vector3.FORWARD + var right = rotation * Vector3.RIGHT + + var stick = joystick("move_left", "move_right", "move_back", "move_forward") + var movement = Vector3.ZERO + movement += right * stick.x * stick.z * speed + movement += forward * stick.y * stick.z * speed + if Input.is_action_pressed("move_up"): + movement += up * speed + if Input.is_action_pressed("move_down"): + movement -= up * speed + movement = move_and_slide(movement, Vector3.UP) + + stick = joystick("look_right", "look_left", "look_down", "look_up") + var mouse_movement = MouseInput.get_mouse_movement() + if stick.z == 0.0: + stick.z = mouse_movement.length() * mouse_dpi + mouse_movement = -mouse_movement.normalized() + stick.x = mouse_movement.x + stick.y = mouse_movement.y + var pitch = forward.dot(Vector3.UP) + if (pitch >= pitch_min and stick.y < 0) or (pitch <= pitch_max and stick.y > 0): + rotate(right, stick.y * stick.z * d_ang_speed) + rotate(Vector3.UP, stick.x * stick.z * d_ang_speed) + +func _ready(): + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + +func _notification(what): + if what == MainLoop.NOTIFICATION_WM_FOCUS_OUT: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + +func _input(event): + if event.is_action_pressed("ui_cancel"): + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + if Input.get_mouse_mode() == Input.MOUSE_MODE_VISIBLE: + if event.is_action_pressed("click"): + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + else: + if event is InputEventMouseMotion: + MouseInput.add_mouse_movement(event.relative) diff --git a/Player.tscn b/Player.tscn new file mode 100644 index 0000000..098799c --- /dev/null +++ b/Player.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://Player.gd" type="Script" id=2] + +[sub_resource type="SphereShape" id=1] + +[node name="Player" type="KinematicBody"] +collision_layer = 2 +script = ExtResource( 2 ) + +[node name="Camera" type="Camera" parent="."] + +[node name="CollisionShape" type="CollisionShape" parent="."] +shape = SubResource( 1 ) diff --git a/beak.tres b/beak.tres new file mode 100644 index 0000000..f9f1e08 --- /dev/null +++ b/beak.tres @@ -0,0 +1,4 @@ +[gd_resource type="SpatialMaterial" format=2] + +[resource] +albedo_color = Color( 0.968627, 0.956863, 0.117647, 1 ) diff --git a/chicken.pck b/chicken.pck new file mode 100644 index 0000000..f5e42f0 Binary files /dev/null and b/chicken.pck differ diff --git a/chicken.tres b/chicken.tres new file mode 100644 index 0000000..a0fffee --- /dev/null +++ b/chicken.tres @@ -0,0 +1,8 @@ +[gd_resource type="SpatialMaterial" load_steps=2 format=2] + +[ext_resource path="res://Chicken.png" type="Texture" id=1] + +[resource] +albedo_color = Color( 1, 0.992157, 0.933333, 1 ) +albedo_texture = ExtResource( 1 ) +uv1_triplanar = true diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/fence.png b/fence.png new file mode 100644 index 0000000..fa6a932 Binary files /dev/null and b/fence.png differ diff --git a/fence.png.import b/fence.png.import new file mode 100644 index 0000000..a00c29f --- /dev/null +++ b/fence.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/fence.png-459e2451c79a09a5b23fb58cc9a7be21.s3tc.stex" +path.etc2="res://.import/fence.png-459e2451c79a09a5b23fb58cc9a7be21.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://fence.png" +dest_files=[ "res://.import/fence.png-459e2451c79a09a5b23fb58cc9a7be21.s3tc.stex", "res://.import/fence.png-459e2451c79a09a5b23fb58cc9a7be21.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=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=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/fence.tres b/fence.tres new file mode 100644 index 0000000..8322411 --- /dev/null +++ b/fence.tres @@ -0,0 +1,9 @@ +[gd_resource type="SpatialMaterial" load_steps=2 format=2] + +[ext_resource path="res://fence.png" type="Texture" id=1] + +[resource] +params_use_alpha_scissor = true +params_alpha_scissor_threshold = 0.98 +albedo_texture = ExtResource( 1 ) +uv1_triplanar = true diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/icon.png differ diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..a4c02e6 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=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 +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..f1f5591 --- /dev/null +++ b/project.godot @@ -0,0 +1,101 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +[application] + +config/name="chicken-chaser-gd" +run/main_scene="res://Main.tscn" +config/icon="res://icon.png" + +[autoload] + +MouseInput="*res://MouseInput.tscn" + +[input] + +move_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) + ] +} +move_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) + ] +} +move_forward={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) + ] +} +move_back={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) + ] +} +move_up={ +"deadzone": 0.5, +"events": [ 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,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null) + ] +} +move_down={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777238,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":6,"pressure":0.0,"pressed":false,"script":null) + ] +} +look_left={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":2,"axis_value":-1.0,"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":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +look_right={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":2,"axis_value":1.0,"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":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +look_up={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":3,"axis_value":-1.0,"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":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +look_down={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":3,"axis_value":1.0,"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":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +click={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) + ] +} + +[layer_names] + +3d_physics/layer_1="Ground" +3d_physics/layer_2="Player" +3d_physics/layer_3="Chicken" + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres" -- cgit v1.2.3