integrate obelisk into alai
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
[node name="Main" type="Node"]
|
||||
pause_mode = 2
|
||||
script = ExtResource( 1 )
|
||||
game_version = "1.1.0"
|
||||
game_version = "1.0.0"
|
||||
level = ExtResource( 2 )
|
||||
|
||||
[node name="Level" type="Node" parent="."]
|
||||
|
BIN
godot/alai.kb
Normal file
BIN
godot/alai.kb
Normal file
Binary file not shown.
@@ -9,35 +9,36 @@ export var gravity = 9.8
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if direction == 1:
|
||||
$AnimatedSprite.flip_h = true
|
||||
$FloorChecker.position.x = $CollisionShape2D.shape.get_extents().x * direction
|
||||
$FloorChecker.enabled = detect_edges
|
||||
Event.connect("level_loaded", self, "_on_level_loaded")
|
||||
if direction == 1:
|
||||
$AnimatedSprite.flip_h = true
|
||||
$FloorChecker.position.x = $CollisionShape2D.shape.get_extents().x * direction
|
||||
$FloorChecker.enabled = detect_edges
|
||||
Event.connect("level_loaded", self, "_on_level_loaded")
|
||||
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if is_on_wall() or not $FloorChecker.is_colliding() and is_on_floor() and $FloorChecker.enabled:
|
||||
direction *= -1
|
||||
$AnimatedSprite.flip_h = not $AnimatedSprite.flip_h
|
||||
$FloorChecker.position.x = $CollisionShape2D.shape.get_extents().x * direction
|
||||
if is_on_wall() or not $FloorChecker.is_colliding() and is_on_floor() and $FloorChecker.enabled:
|
||||
direction *= -1
|
||||
$AnimatedSprite.flip_h = not $AnimatedSprite.flip_h
|
||||
$FloorChecker.position.x = $CollisionShape2D.shape.get_extents().x * direction
|
||||
|
||||
velocity.y += gravity
|
||||
velocity.x = speed * direction
|
||||
velocity = move_and_slide(velocity, Vector2.UP)
|
||||
velocity.y += gravity
|
||||
velocity.x = speed * direction
|
||||
velocity = move_and_slide(velocity, Vector2.UP)
|
||||
|
||||
for i in get_slide_count():
|
||||
var collision = get_slide_collision(i)
|
||||
if collision.collider.name == "Player":
|
||||
Event.emit_signal("player_touched", 3)
|
||||
for i in get_slide_count():
|
||||
var collision = get_slide_collision(i)
|
||||
if collision.collider.name == "Player":
|
||||
Event.emit_signal("player_touched", 3)
|
||||
|
||||
Event.emit_signal("object_updated", self.get_name(), "Walking", global_position, velocity)
|
||||
Event.emit_signal("object_updated", self.get_name(), "Walking", global_position, velocity)
|
||||
Event.emit_signal("report_object", self.get_name(), "Walking", global_position, velocity)
|
||||
|
||||
|
||||
func squash() -> void:
|
||||
Event.emit_signal("object_removed", self.get_name())
|
||||
queue_free()
|
||||
Event.emit_signal("object_removed", self.get_name())
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_level_loaded() -> void:
|
||||
Event.emit_signal("object_created", self.get_name(), "Walking", global_position, Vector2(0, 0))
|
||||
Event.emit_signal("object_created", self.get_name(), "Walking", global_position, Vector2(0, 0))
|
||||
|
8
godot/characters/player/AI.gdns
Normal file
8
godot/characters/player/AI.gdns
Normal file
@@ -0,0 +1,8 @@
|
||||
[gd_resource type="NativeScript" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://gdnative/alai.tres" type="GDNativeLibrary" id=1]
|
||||
|
||||
[resource]
|
||||
resource_name = "AI"
|
||||
class_name = "AI"
|
||||
library = ExtResource( 1 )
|
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
[gd_scene load_steps=11 format=2]
|
||||
|
||||
[ext_resource path="res://characters/player/sprites/green.tres" type="SpriteFrames" id=1]
|
||||
[ext_resource path="res://characters/player/states/Idle.gdns" type="Script" id=2]
|
||||
@@ -8,6 +8,7 @@
|
||||
[ext_resource path="res://characters/player/states/Jump.gdns" type="Script" id=6]
|
||||
[ext_resource path="res://characters/player/states/Fall.gdns" type="Script" id=7]
|
||||
[ext_resource path="res://assets/sounds/jump.wav" type="AudioStream" id=8]
|
||||
[ext_resource path="res://characters/player/AI.gdns" type="Script" id=9]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 7, 12 )
|
||||
@@ -16,6 +17,9 @@ extents = Vector2( 7, 12 )
|
||||
collision_mask = 10
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="AI" type="Node" parent="."]
|
||||
script = ExtResource( 9 )
|
||||
|
||||
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
|
||||
frames = ExtResource( 1 )
|
||||
animation = "idle"
|
||||
|
5
godot/collectables/coin/Coin.gd
Normal file
5
godot/collectables/coin/Coin.gd
Normal file
@@ -0,0 +1,5 @@
|
||||
extends Area2D
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
Event.emit_signal("report_object", self.get_name(), "not collected", global_position, Vector2())
|
@@ -1,10 +1,11 @@
|
||||
[gd_scene load_steps=11 format=2]
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://assets/coin.png" type="Texture" id=1]
|
||||
[ext_resource path="res://state_machine/StateMachine.gdns" type="Script" id=2]
|
||||
[ext_resource path="res://collectables/coin/states/CoinNotCollected.gdns" type="Script" id=3]
|
||||
[ext_resource path="res://collectables/coin/states/CoinCollected.gdns" type="Script" id=4]
|
||||
[ext_resource path="res://assets/sounds/coin.wav" type="AudioStream" id=5]
|
||||
[ext_resource path="res://collectables/coin/Coin.gd" type="Script" id=6]
|
||||
|
||||
[sub_resource type="CircleShape2D" id=1]
|
||||
radius = 6.0
|
||||
@@ -43,6 +44,7 @@ tracks/0/keys = {
|
||||
|
||||
[node name="Coin" type="Area2D"]
|
||||
collision_layer = 4
|
||||
script = ExtResource( 6 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2( 9, 9 )
|
||||
@@ -51,7 +53,6 @@ shape = SubResource( 1 )
|
||||
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
|
||||
frames = SubResource( 4 )
|
||||
animation = "spin"
|
||||
frame = 1
|
||||
playing = true
|
||||
centered = false
|
||||
|
||||
|
5
godot/goal/Goal.gd
Normal file
5
godot/goal/Goal.gd
Normal file
@@ -0,0 +1,5 @@
|
||||
extends Area2D
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
Event.emit_signal("report_object", self.get_name(), "not touched", global_position, Vector2())
|
@@ -1,9 +1,10 @@
|
||||
[gd_scene load_steps=9 format=2]
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://assets/flag.png" type="Texture" id=1]
|
||||
[ext_resource path="res://goal/GoalNotReached.gdns" type="Script" id=2]
|
||||
[ext_resource path="res://goal/GoalReached.gdns" type="Script" id=3]
|
||||
[ext_resource path="res://state_machine/StateMachine.gdns" type="Script" id=4]
|
||||
[ext_resource path="res://goal/Goal.gd" type="Script" id=5]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=5]
|
||||
extents = Vector2( 10, 18 )
|
||||
@@ -25,15 +26,13 @@ animations = [ {
|
||||
} ]
|
||||
|
||||
[node name="Goal" type="Area2D"]
|
||||
position = Vector2( 324, 378 )
|
||||
collision_layer = 32
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2( 18, 18 )
|
||||
shape = SubResource( 5 )
|
||||
|
||||
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
|
||||
position = Vector2( 18, 18 )
|
||||
frames = SubResource( 8 )
|
||||
animation = "flagmove"
|
||||
playing = true
|
||||
|
@@ -13,7 +13,7 @@
|
||||
[node name="TestLevel" type="Node2D"]
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource( 5 )]
|
||||
position = Vector2( 36, 444 )
|
||||
position = Vector2( 36, 498 )
|
||||
collision_layer = 5
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="Player"]
|
||||
@@ -63,15 +63,21 @@ position = Vector2( 216, 504 )
|
||||
[node name="Coin8" parent="Coins" instance=ExtResource( 2 )]
|
||||
position = Vector2( 459, 468 )
|
||||
|
||||
[node name="Coin9" parent="Coins" instance=ExtResource( 2 )]
|
||||
position = Vector2( 560, 468 )
|
||||
|
||||
[node name="BGM" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 6 )
|
||||
volume_db = -25.0
|
||||
autoplay = true
|
||||
|
||||
[node name="Goal" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 621, 486 )
|
||||
position = Vector2( 656, 504 )
|
||||
|
||||
[node name="Enemies" type="Node" parent="."]
|
||||
|
||||
[node name="Shelly" parent="Enemies" instance=ExtResource( 1 )]
|
||||
position = Vector2( 379, 510 )
|
||||
|
||||
[node name="Shelly2" parent="Enemies" instance=ExtResource( 1 )]
|
||||
position = Vector2( 628, 510 )
|
||||
|
Reference in New Issue
Block a user