Add initial version of citizen object.
This commit is contained in:
parent
c344755916
commit
e3b2b02bd0
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://brjswv5ryy8om"
|
uid="uid://brjswv5ryy8om"
|
||||||
path="res://.godot/imported/lilguy.png-051ea7725e05924272fe99d4c4cd30d6.ctex"
|
path.s3tc="res://.godot/imported/lilguy.png-051ea7725e05924272fe99d4c4cd30d6.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/images/lilguy.png"
|
source_file="res://assets/images/lilguy.png"
|
||||||
dest_files=["res://.godot/imported/lilguy.png-051ea7725e05924272fe99d4c4cd30d6.ctex"]
|
dest_files=["res://.godot/imported/lilguy.png-051ea7725e05924272fe99d4c4cd30d6.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cpov32m0nxjvh"
|
uid="uid://cpov32m0nxjvh"
|
||||||
path="res://.godot/imported/lilguy_arms.png-579679cf4842d72a1b6c8bc34db4fa7f.ctex"
|
path.s3tc="res://.godot/imported/lilguy_arms.png-579679cf4842d72a1b6c8bc34db4fa7f.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/images/lilguy_arms.png"
|
source_file="res://assets/images/lilguy_arms.png"
|
||||||
dest_files=["res://.godot/imported/lilguy_arms.png-579679cf4842d72a1b6c8bc34db4fa7f.ctex"]
|
dest_files=["res://.godot/imported/lilguy_arms.png-579679cf4842d72a1b6c8bc34db4fa7f.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
@tool
|
||||||
|
extends Unit
|
||||||
|
class_name Citizen
|
||||||
|
|
||||||
|
@onready var body: Sprite3D = $Body
|
||||||
|
@onready var hands: Sprite3D = $Body/Hands
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
super(delta)
|
||||||
|
var camera: Camera3D
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
camera = EditorInterface.get_editor_viewport_3d(0).get_camera_3d()
|
||||||
|
else:
|
||||||
|
camera = get_viewport().get_camera_3d()
|
||||||
|
var facing_direction: Vector3 = -global_basis.z
|
||||||
|
var camera_local_facing: Vector3 = facing_direction * camera.global_basis
|
||||||
|
|
||||||
|
var facing_away: bool = camera_local_facing.z < 0
|
||||||
|
var facing_right: bool = camera_local_facing.x > 0
|
||||||
|
|
||||||
|
body.frame = 1 if facing_away else 0
|
||||||
|
hands.frame = 1 if facing_away else 0
|
||||||
|
body.flip_h = facing_right
|
||||||
|
hands.flip_h = facing_right
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b7xficxq807qd
|
|
@ -0,0 +1,52 @@
|
||||||
|
[gd_scene load_steps=8 format=3 uid="uid://skxli3htgn7"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://1gcj3gixy6hs" path="res://objects/units/unit.tscn" id="1_6046h"]
|
||||||
|
[ext_resource type="Script" uid="uid://b7xficxq807qd" path="res://objects/units/citizen.gd" id="2_dv62s"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://brjswv5ryy8om" path="res://assets/images/lilguy.png" id="3_pedvu"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cpov32m0nxjvh" path="res://assets/images/lilguy_arms.png" id="4_i1unn"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://gf0q5hs4wjva" path="res://assets/models/Ore.obj" id="5_dds8f"]
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vpcy6"]
|
||||||
|
albedo_texture = ExtResource("3_pedvu")
|
||||||
|
billboard_mode = 2
|
||||||
|
|
||||||
|
[sub_resource type="QuadMesh" id="QuadMesh_5xmhx"]
|
||||||
|
material = SubResource("StandardMaterial3D_vpcy6")
|
||||||
|
|
||||||
|
[node name="Citizen" instance=ExtResource("1_6046h")]
|
||||||
|
collision_layer = 8
|
||||||
|
collision_mask = 5
|
||||||
|
script = ExtResource("2_dv62s")
|
||||||
|
|
||||||
|
[node name="NavigationAgent3D" parent="." index="0"]
|
||||||
|
target_position = Vector3(21.7818, 1, 12.7739)
|
||||||
|
velocity = Vector3(0.811107, 0, -0.811107)
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" parent="." index="2"]
|
||||||
|
visible = false
|
||||||
|
mesh = SubResource("QuadMesh_5xmhx")
|
||||||
|
|
||||||
|
[node name="Label3D" parent="." index="4"]
|
||||||
|
text = "HP: 100"
|
||||||
|
|
||||||
|
[node name="Body" type="Sprite3D" parent="." index="5"]
|
||||||
|
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0)
|
||||||
|
billboard = 2
|
||||||
|
shaded = true
|
||||||
|
alpha_cut = 1
|
||||||
|
texture_filter = 0
|
||||||
|
texture = ExtResource("3_pedvu")
|
||||||
|
hframes = 2
|
||||||
|
|
||||||
|
[node name="Hands" type="Sprite3D" parent="Body" index="0"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.01)
|
||||||
|
billboard = 2
|
||||||
|
shaded = true
|
||||||
|
alpha_cut = 1
|
||||||
|
texture_filter = 0
|
||||||
|
texture = ExtResource("4_i1unn")
|
||||||
|
|
||||||
|
[node name="Held Item" type="MeshInstance3D" parent="Body/Hands" index="0"]
|
||||||
|
transform = Transform3D(0.17, 0, 0, 0, 0.17, 0, 0, 0, 0.17, 5.96046e-08, -0.0580646, -0.0773078)
|
||||||
|
mesh = ExtResource("5_dds8f")
|
||||||
|
skeleton = NodePath("../../..")
|
|
@ -22,9 +22,9 @@ material = SubResource("StandardMaterial3D_jka67")
|
||||||
|
|
||||||
[node name="Unit" type="RigidBody3D"]
|
[node name="Unit" type="RigidBody3D"]
|
||||||
axis_lock_angular_x = true
|
axis_lock_angular_x = true
|
||||||
axis_lock_angular_y = true
|
|
||||||
axis_lock_angular_z = true
|
axis_lock_angular_z = true
|
||||||
physics_material_override = SubResource("PhysicsMaterial_a0tk4")
|
physics_material_override = SubResource("PhysicsMaterial_a0tk4")
|
||||||
|
angular_damp = 20.0
|
||||||
script = ExtResource("1_dberb")
|
script = ExtResource("1_dberb")
|
||||||
movement_force = 5.0
|
movement_force = 5.0
|
||||||
max_speed = 5.0
|
max_speed = 5.0
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
extends RigidBody3D
|
extends RigidBody3D
|
||||||
class_name Unit
|
class_name Unit
|
||||||
|
|
||||||
|
@export_group("Defence")
|
||||||
@export var max_hp: float = 100
|
@export var max_hp: float = 100
|
||||||
|
|
||||||
|
@export_group("Movement")
|
||||||
@export var movement_force: float = 100
|
@export var movement_force: float = 100
|
||||||
|
@export var rotation_torque: float = 3
|
||||||
@export var max_speed: float = 100
|
@export var max_speed: float = 100
|
||||||
|
|
||||||
|
@export_group("Navigation")
|
||||||
@export var minimum_progress_rate: float = 1.0
|
@export var minimum_progress_rate: float = 1.0
|
||||||
@export var stuck_time: float = 1.0
|
@export var stuck_time: float = 1.0
|
||||||
|
|
||||||
|
@ -35,6 +41,7 @@ func _process(delta: float) -> void:
|
||||||
if nav_agent_3d.is_target_reached() \
|
if nav_agent_3d.is_target_reached() \
|
||||||
or nav_agent_3d.target_position.is_zero_approx() \
|
or nav_agent_3d.target_position.is_zero_approx() \
|
||||||
or !nav_agent_3d.is_target_reachable():
|
or !nav_agent_3d.is_target_reachable():
|
||||||
|
#target_velocity = Vector3()
|
||||||
nav_agent_3d.target_position = move_target + Vector3(randfn(0, move_radius), 0, randfn(0, move_radius))
|
nav_agent_3d.target_position = move_target + Vector3(randfn(0, move_radius), 0, randfn(0, move_radius))
|
||||||
#nav_agent_3d.target_position = NavigationServer3D.map_get_random_point(NavigationServer3D.get_maps()[0], 1, true)
|
#nav_agent_3d.target_position = NavigationServer3D.map_get_random_point(NavigationServer3D.get_maps()[0], 1, true)
|
||||||
last_distance_to_target = nav_agent_3d.distance_to_target()
|
last_distance_to_target = nav_agent_3d.distance_to_target()
|
||||||
|
@ -56,10 +63,11 @@ func _process(delta: float) -> void:
|
||||||
var next_point: Vector3 = nav_agent_3d.get_next_path_position()
|
var next_point: Vector3 = nav_agent_3d.get_next_path_position()
|
||||||
#DebugDraw3D.draw_sphere(next_point, 0.1, Color.YELLOW)
|
#DebugDraw3D.draw_sphere(next_point, 0.1, Color.YELLOW)
|
||||||
var direction: Vector3 = (next_point - global_position).normalized()
|
var direction: Vector3 = (next_point - global_position).normalized()
|
||||||
|
#basis = Basis.looking_at(direction)
|
||||||
#DebugDraw3D.draw_line(global_position, global_position + linear_velocity, Color.BLUE)
|
#DebugDraw3D.draw_line(global_position, global_position + linear_velocity, Color.BLUE)
|
||||||
target_velocity = direction * max_speed
|
target_velocity = direction * max_speed
|
||||||
nav_agent_3d.velocity = target_velocity
|
nav_agent_3d.velocity = target_velocity
|
||||||
#DebugDraw3D.draw_line(global_position, global_position + target_velocity, Color.MAGENTA)
|
#DebugDraw3D.draw_line(global_position, global_positiaon + target_velocity, Color.MAGENTA)
|
||||||
#DebugDraw3D.draw_text(global_position + Vector3(0,1,0), "%f" % nav_agent_3d.distance_to_target())
|
#DebugDraw3D.draw_text(global_position + Vector3(0,1,0), "%f" % nav_agent_3d.distance_to_target())
|
||||||
|
|
||||||
func unstuck() -> void:
|
func unstuck() -> void:
|
||||||
|
@ -90,3 +98,6 @@ func _physics_process(delta: float) -> void:
|
||||||
var force: Vector3 = (force_direction * movement_force).slide(normal)
|
var force: Vector3 = (force_direction * movement_force).slide(normal)
|
||||||
#DebugDraw3D.draw_line(global_position, global_position + force, Color.GREEN)
|
#DebugDraw3D.draw_line(global_position, global_position + force, Color.GREEN)
|
||||||
apply_central_force(force)
|
apply_central_force(force)
|
||||||
|
apply_torque(Vector3(0,force_direction.normalized().signed_angle_to(-global_basis.z, Vector3.DOWN) * rotation_torque,0))
|
||||||
|
#DebugDraw3D.draw_line(global_position, global_position - global_basis.z, Color.BLUE)
|
||||||
|
#DebugDraw3D.draw_line(global_position, global_position + force_direction, Color.RED)
|
||||||
|
|
Loading…
Reference in New Issue