beep boop (: player sprite

This commit is contained in:
Harmony Honey 2021-10-26 19:05:03 -04:00
parent f95ac6af54
commit 79e1eabe00
5 changed files with 29 additions and 18 deletions

BIN
media/image/player.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

View file

@ -28,7 +28,7 @@ _global_script_class_icons={
config/name="gdRota"
run/main_scene="res://src/map/0.tscn"
config/icon="res://icon.png"
config/icon="res://media/image/gobot.png"
[autoload]

View file

@ -3,12 +3,13 @@ extends KinematicBody2D
class_name Player
onready var sprite : Sprite = $Sprite
onready var face : Sprite = $Sprite/Face
onready var hit_area : Area2D = $HitArea
onready var push_area : Area2D = $PushArea
onready var audio_slap : AudioStreamPlayer2D = $AudioSlap
onready var audio_punch : AudioStreamPlayer2D = $AudioPunch
var camera : Camera2D
export var dir := 0 setget set_dir
var velocity := Vector2.ZERO
@ -27,12 +28,14 @@ var dir_x := 1
onready var label : Label = $DebugCanvas/Labels/Label
var readout = []
var camera : Camera2D
export var sprite_weight := 3.0
var target_angle := 0.0
func _ready():
if Engine.editor_hint: return
readout.resize(4)
label.visible = true
for i in get_tree().get_nodes_in_group("game_camera"):
camera = i
@ -42,16 +45,18 @@ func _ready():
set_dir()
camera.rotation_degrees = camera.target_angle
break
func rot(arg : Vector2, backwards := false):
return arg.rotated(deg2rad((-dir if backwards else dir) * 90))
func set_dir(arg := dir):
dir = 3 if arg < 0 else (arg % 4)
target_angle = dir * 90
if Engine.editor_hint:
if !face: face = $Sprite/Face
face.rotation_degrees = dir * 90
if !sprite: sprite = $Sprite/Face
sprite.rotation_degrees = dir * 90
elif camera:
camera.target_angle = dir * 90
@ -61,7 +66,8 @@ func spin(right := false):
set_dir(dir + (1 if right else 3))
func set_rotation(degrees):
face.rotation_degrees = degrees
pass
#face.rotation_degrees = degrees
func hit_effector(pos : Vector2):
move_and_collide(pos - position)
@ -112,6 +118,7 @@ func _physics_process(delta):
if joy.x != 0:
dir_x = joy.x
update_areas()
sprite.flip_h = joy.x < 0
# on floor
is_floor = test_move(transform, rot(Vector2.DOWN))
@ -167,6 +174,9 @@ func _physics_process(delta):
# camera
camera.position = position
# sprite
sprite.rotation = lerp_angle(sprite.rotation, deg2rad(target_angle), delta * sprite_weight)
# debug label
readout[0] = "dir: " + str(dir)
readout[1] = "is_floor: " + str(is_floor)

View file

@ -1,13 +1,12 @@
[gd_scene load_steps=10 format=2]
[gd_scene load_steps=9 format=2]
[ext_resource path="res://media/image/gobot.png" type="Texture" id=1]
[ext_resource path="res://src/actor/Player.gd" type="Script" id=2]
[ext_resource path="res://media/audio/sfx/slap0.wav" type="AudioStream" id=3]
[ext_resource path="res://media/audio/sfx/player_punch0.wav" type="AudioStream" id=4]
[ext_resource path="res://media/image/rect.png" type="Texture" id=5]
[ext_resource path="res://media/image/player.png" type="Texture" id=6]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 40, 40 )
extents = Vector2( 30, 30 )
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 40, 40 )
@ -25,6 +24,7 @@ z_index = 10
z_as_relative = false
collision_layer = 3
script = ExtResource( 2 )
sprite_weight = 6.0
[node name="DebugCanvas" type="CanvasLayer" parent="."]
@ -39,6 +39,7 @@ __meta__ = {
}
[node name="Label" type="Label" parent="DebugCanvas/Labels"]
visible = false
margin_right = 21.0
margin_bottom = 14.0
custom_colors/font_color = Color( 0, 0, 0, 1 )
@ -48,16 +49,14 @@ __meta__ = {
}
[node name="Sprite" type="Sprite" parent="."]
scale = Vector2( 0.199744, 0.199744 )
texture = ExtResource( 5 )
[node name="Face" type="Sprite" parent="Sprite"]
texture = ExtResource( 1 )
scale = Vector2( 0.25, 0.25 )
texture = ExtResource( 6 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
[node name="BodyArea" type="Area2D" parent="."]
visible = false
collision_layer = 3
collision_mask = 8
@ -65,6 +64,7 @@ collision_mask = 8
shape = SubResource( 2 )
[node name="HitArea" type="Area2D" parent="."]
visible = false
position = Vector2( 50, 0 )
collision_layer = 0
collision_mask = 4
@ -84,6 +84,7 @@ __meta__ = {
}
[node name="PushArea" type="Area2D" parent="."]
visible = false
position = Vector2( 40, 0 )
collision_layer = 0
collision_mask = 4

File diff suppressed because one or more lines are too long