feat: implemented basic third person movement
This commit is contained in:
		
							parent
							
								
									062633c742
								
							
						
					
					
						commit
						f7e07797c8
					
				|  | @ -7,6 +7,16 @@ void ActorBody::_bind_methods() { | |||
| 	BIND_HPROPERTY(Variant::FLOAT, movement_speed, PROPERTY_HINT_RANGE, "0.0,20.0"); | ||||
| } | ||||
| 
 | ||||
| void ActorBody::physics_process(double delta) { | ||||
| 	if (this->teleport_on_process) { | ||||
| 		set_global_position(this->teleport_target); | ||||
| 		this->teleport_on_process = false; | ||||
| 		force_update_transform(); | ||||
| 	} | ||||
| 	set_velocity(get_movement_direction() * this->movement_speed); | ||||
| 	move_and_slide(); | ||||
| } | ||||
| 
 | ||||
| void ActorBody::_notification(int what) { | ||||
| 	if (Engine::get_singleton()->is_editor_hint()) { | ||||
| 		return; | ||||
|  | @ -14,20 +24,18 @@ void ActorBody::_notification(int what) { | |||
| 	switch (what) { | ||||
| 		default: | ||||
| 			return; | ||||
| 		case NOTIFICATION_READY: | ||||
| 			set_physics_process(true); | ||||
| 			set_as_top_level(true); | ||||
| 		case NOTIFICATION_PHYSICS_PROCESS: | ||||
| 			physics_process(get_physics_process_delta_time()); | ||||
| 			return; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void ActorBody::physics_process(double delta) { | ||||
| 	set_velocity(get_movement_direction() * this->movement_speed); | ||||
| 	move_and_slide(); | ||||
| } | ||||
| 
 | ||||
| void ActorBody::set_movement_direction(Vector3 direction) { | ||||
| 	this->mode = Direction; | ||||
| 	this->movement_vector = { direction.x, 0.f, direction.y }; | ||||
| 	this->movement_vector = Vector3(direction.x, 0.f, direction.z).normalized(); | ||||
| } | ||||
| 
 | ||||
| Vector3 ActorBody::get_movement_direction() const { | ||||
|  | @ -43,7 +51,7 @@ Vector3 ActorBody::get_movement_direction() const { | |||
| 
 | ||||
| void ActorBody::set_movement_target(Vector3 location) { | ||||
| 	this->mode = Position; | ||||
| 	this->movement_vector = { location.x, 0.f, location.y }; | ||||
| 	this->movement_vector = { location.x, 0.f, location.z }; | ||||
| } | ||||
| 
 | ||||
| Vector3 ActorBody::get_movement_target() const { | ||||
|  | @ -55,6 +63,11 @@ Vector3 ActorBody::get_movement_target() const { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| void ActorBody::teleport(Vector3 target) { | ||||
| 	this->teleport_target = target; | ||||
| 	this->teleport_on_process = true; | ||||
| } | ||||
| 
 | ||||
| void ActorBody::set_movement_speed(float speed) { | ||||
| 	this->movement_speed = speed; | ||||
| } | ||||
|  |  | |||
|  | @ -20,15 +20,18 @@ public: | |||
| 	Vector3 get_movement_direction() const; | ||||
| 	void set_movement_target(Vector3 location); | ||||
| 	Vector3 get_movement_target() const; | ||||
| 	void teleport(Vector3 target); | ||||
| 
 | ||||
| 	void set_movement_speed(float speed); | ||||
| 	float get_movement_speed() const; | ||||
| 	MovementMode get_movement_mode() const; | ||||
| 
 | ||||
| private: | ||||
| 	float movement_speed{ 1.f }; | ||||
| 	float movement_speed{ 3.f }; | ||||
| 	Vector3 movement_vector{ 0.f, 0.f, 0.f }; | ||||
| 	MovementMode mode{ Direction }; | ||||
| 	bool teleport_on_process{ false }; | ||||
| 	Vector3 teleport_target{}; | ||||
| }; | ||||
| 
 | ||||
| #endif //! ACTOR_BODY_H
 | ||||
|  |  | |||
|  | @ -3,14 +3,7 @@ | |||
| 
 | ||||
| GameState *GameState::singleton_instance{ nullptr }; | ||||
| 
 | ||||
| void GameState::_bind_methods() { | ||||
| 	BIND_PROPERTY(Variant::STRING, locale_uid); | ||||
| 	BIND_PROPERTY(Variant::STRING, locale_entrance_path); | ||||
| 	{ | ||||
| 		String const party_member_data_hint{ vformat("%s/%s:PartyMemberData", Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE) }; | ||||
| 		BIND_HPROPERTY(Variant::ARRAY, player_party, PROPERTY_HINT_ARRAY_TYPE, party_member_data_hint); | ||||
| 	} | ||||
| } | ||||
| void GameState::_bind_methods() {} | ||||
| 
 | ||||
| GameState::GameState() { | ||||
| 	self_type::singleton_instance = this; | ||||
|  | @ -23,37 +16,3 @@ GameState::~GameState() { | |||
| GameState *GameState::get_singleton() { | ||||
| 	return self_type::singleton_instance; | ||||
| } | ||||
| 
 | ||||
| void GameState::set_locale_uid(String const &value) { | ||||
| 	this->locale_uid = value; | ||||
| } | ||||
| 
 | ||||
| String GameState::get_locale_uid() const { | ||||
| 	return this->locale_uid; | ||||
| } | ||||
| 
 | ||||
| void GameState::set_locale_entrance_path(String const &value) { | ||||
| 	this->locale_uid = value; | ||||
| } | ||||
| 
 | ||||
| String GameState::get_locale_entrance_path() const { | ||||
| 	return this->locale_uid; | ||||
| } | ||||
| 
 | ||||
| void GameState::set_player_party(Array array) { | ||||
| 	this->player_party.clear(); | ||||
| 	for (int i{ 0 }; i < array.size(); ++i) { | ||||
| 		Ref<PartyMemberData> data{ array[i] }; | ||||
| 		if (data.is_valid()) { | ||||
| 			this->player_party.push_back(data); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| Array GameState::get_player_party() const { | ||||
| 	Array a{}; | ||||
| 	for (Ref<PartyMemberData> const &data : this->player_party) { | ||||
| 		a.push_back(data); | ||||
| 	} | ||||
| 	return a; | ||||
| } | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| #ifndef GAME_STATE_H | ||||
| #define GAME_STATE_H | ||||
| 
 | ||||
| #include "authority/party_member_data.h" | ||||
| #include "core/object/class_db.h" | ||||
| #include "core/object/object.h" | ||||
| #include "core/templates/vector.h" | ||||
| 
 | ||||
|  | @ -14,17 +14,6 @@ public: | |||
| 	GameState(); | ||||
| 	virtual ~GameState(); | ||||
| 	static GameState *get_singleton(); | ||||
| 	void set_locale_uid(String const &value); | ||||
| 	String get_locale_uid() const; | ||||
| 	void set_locale_entrance_path(String const &value); | ||||
| 	String get_locale_entrance_path() const; | ||||
| 	void set_player_party(Array array); | ||||
| 	Array get_player_party() const; | ||||
| 
 | ||||
| private: | ||||
| 	String locale_uid{ "" }; | ||||
| 	String locale_entrance_path{ "" }; | ||||
| 	Vector<Ref<PartyMemberData>> player_party{}; | ||||
| }; | ||||
| 
 | ||||
| #endif // !GAME_STATE_H
 | ||||
|  |  | |||
|  | @ -1,5 +1,7 @@ | |||
| #include "player_actor.h" | ||||
| #include "authority/game_state.h" | ||||
| #include "authority/player_input.h" | ||||
| #include "scene/main/viewport.h" | ||||
| 
 | ||||
| void PlayerActor::_bind_methods() { | ||||
| } | ||||
|  | @ -7,10 +9,20 @@ void PlayerActor::_bind_methods() { | |||
| void PlayerActor::ready() { | ||||
| 	PlayerInput *input{ cast_to<PlayerInput>(get_node(NodePath("%PlayerInput"))) }; | ||||
| 	input->connect(PlayerInput::signal_movement, callable_mp(this, &self_type::input_move)); | ||||
| 	set_process(true); | ||||
| } | ||||
| 
 | ||||
| void PlayerActor::process(double delta) { | ||||
| 	Basis const basis{ this->get_viewport()->get_camera_3d()->get_global_basis() }; | ||||
| 	Vector3 x{ basis.get_column(0) }; | ||||
| 	x = Vector3{ x.x, 0.f, x.z }.normalized(); | ||||
| 	Vector3 z{ basis.get_column(2) }; | ||||
| 	z = Vector3{ z.x, 0.f, z.z }.normalized(); | ||||
| 	set_movement_direction(x * this->move_input.x + z * this->move_input.y); | ||||
| } | ||||
| 
 | ||||
| void PlayerActor::input_move(Vector2 movement) { | ||||
| 	set_movement_direction({ movement.x, 0.f, movement.y }); | ||||
| 	this->move_input = movement; | ||||
| } | ||||
| 
 | ||||
| void PlayerActor::_notification(int what) { | ||||
|  | @ -23,5 +35,8 @@ void PlayerActor::_notification(int what) { | |||
| 		case NOTIFICATION_READY: | ||||
| 			ready(); | ||||
| 			return; | ||||
| 		case NOTIFICATION_PROCESS: | ||||
| 			process(get_process_delta_time()); | ||||
| 			return; | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -7,10 +7,14 @@ class PlayerActor : public ActorBody { | |||
| 	GDCLASS(PlayerActor, ActorBody); | ||||
| 	static void _bind_methods(); | ||||
| 	void ready(); | ||||
| 	void process(double delta); | ||||
| 	void input_move(Vector2 movement); | ||||
| 
 | ||||
| public: | ||||
| 	void _notification(int what); | ||||
| 
 | ||||
| private: | ||||
| 	Vector2 move_input{ 0.f, 0.f }; | ||||
| }; | ||||
| 
 | ||||
| #endif // !PLAYER_ACTOR_H
 | ||||
|  |  | |||
|  | @ -4,13 +4,21 @@ | |||
| #include "macros.h" | ||||
| 
 | ||||
| String const PlayerInput::signal_movement{ "movement" }; | ||||
| String const PlayerInput::signal_look{ "look" }; | ||||
| String const PlayerInput::signal_mouselook{ "mouselook" }; | ||||
| 
 | ||||
| void PlayerInput::_bind_methods() { | ||||
| 	BIND_PROPERTY(Variant::STRING, action_move_left); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_move_right); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_move_forward); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_move_back); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_look_left); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_look_right); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_look_up); | ||||
| 	BIND_PROPERTY(Variant::STRING, action_look_down); | ||||
| 	ADD_SIGNAL(MethodInfo(self_type::signal_movement, PropertyInfo(Variant::VECTOR2, "movement_directions"))); | ||||
| 	ADD_SIGNAL(MethodInfo(self_type::signal_look, PropertyInfo(Variant::VECTOR2, "look_delta"))); | ||||
| 	ADD_SIGNAL(MethodInfo(self_type::signal_mouselook, PropertyInfo(Variant::VECTOR2, "mouse_delta"))); | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::_notification(int what) { | ||||
|  | @ -21,22 +29,56 @@ void PlayerInput::_notification(int what) { | |||
| 		default: | ||||
| 			return; | ||||
| 		case NOTIFICATION_READY: | ||||
| 			this->set_process_unhandled_input(true); | ||||
| 			set_process_unhandled_input(true); | ||||
| 			Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED); | ||||
| 			return; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::unhandled_input(Ref<InputEvent> const &event) { | ||||
| 	Input *input{ Input::get_singleton() }; | ||||
| 
 | ||||
| 	bool is_movement_action{ event->is_action(self_type::action_move_left) }; | ||||
| 	is_movement_action |= event->is_action(self_type::action_move_right); | ||||
| 	is_movement_action |= event->is_action(self_type::action_move_forward); | ||||
| 	is_movement_action |= event->is_action(self_type::action_move_back); | ||||
| 	if (is_movement_action) { | ||||
| 		float const h_axis{ input->get_axis(self_type::action_move_right, self_type::action_move_left) }; | ||||
| 		float const v_axis{ input->get_axis(self_type::action_move_back, self_type::action_move_forward) }; | ||||
| 		this->emit_signal(self_type::signal_movement, Vector2{ h_axis, v_axis }); | ||||
| 		float const h_axis{ input->get_axis(self_type::action_move_left, self_type::action_move_right) }; | ||||
| 		float const v_axis{ input->get_axis(self_type::action_move_forward, self_type::action_move_back) }; | ||||
| 		emit_signal(self_type::signal_movement, Vector2{ h_axis, v_axis }); | ||||
| 	} | ||||
| 
 | ||||
| 	bool is_look_action{ event->is_action(self_type::action_look_left) }; | ||||
| 	is_look_action |= event->is_action(self_type::action_look_right); | ||||
| 	is_look_action |= event->is_action(self_type::action_look_up); | ||||
| 	is_look_action |= event->is_action(self_type::action_look_down); | ||||
| 	if (is_look_action) { | ||||
| 		float const h_axis{ input->get_axis(self_type::action_look_right, self_type::action_look_left) }; | ||||
| 		float const v_axis{ input->get_axis(self_type::action_look_down, self_type::action_look_up) }; | ||||
| 		emit_signal(self_type::signal_look, Vector2{ h_axis, v_axis } * this->look_speed); | ||||
| 	} | ||||
| 
 | ||||
| 	Ref<InputEventMouseMotion> mouse_motion_action{ event }; | ||||
| 	if (mouse_motion_action.is_valid()) { | ||||
| 		Vector2 const velocity{ mouse_motion_action->get_relative() }; | ||||
| 		emit_signal(self_type::signal_mouselook, velocity * this->mouselook_speed); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_mouselook_speed(Vector2 speed) { | ||||
| 	this->mouselook_speed = speed; | ||||
| } | ||||
| 
 | ||||
| Vector2 PlayerInput::get_mouselook_speed() const { | ||||
| 	return this->mouselook_speed; | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_look_speed(Vector2 speed) { | ||||
| 	this->look_speed = speed; | ||||
| } | ||||
| 
 | ||||
| Vector2 PlayerInput::get_look_speed() const { | ||||
| 	return this->look_speed; | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_action_move_left(String action) { | ||||
|  | @ -70,3 +112,35 @@ void PlayerInput::set_action_move_back(String action) { | |||
| String PlayerInput::get_action_move_back() const { | ||||
| 	return this->action_move_back; | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_action_look_left(String action) { | ||||
| 	this->action_look_left = action; | ||||
| } | ||||
| 
 | ||||
| String PlayerInput::get_action_look_left() const { | ||||
| 	return this->action_look_left; | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_action_look_right(String action) { | ||||
| 	this->action_look_right = action; | ||||
| } | ||||
| 
 | ||||
| String PlayerInput::get_action_look_right() const { | ||||
| 	return this->action_look_right; | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_action_look_up(String action) { | ||||
| 	this->action_look_up = action; | ||||
| } | ||||
| 
 | ||||
| String PlayerInput::get_action_look_up() const { | ||||
| 	return this->action_look_up; | ||||
| } | ||||
| 
 | ||||
| void PlayerInput::set_action_look_down(String action) { | ||||
| 	this->action_look_down = action; | ||||
| } | ||||
| 
 | ||||
| String PlayerInput::get_action_look_down() const { | ||||
| 	return this->action_look_down; | ||||
| } | ||||
|  |  | |||
|  | @ -11,6 +11,12 @@ class PlayerInput : public Node { | |||
| public: | ||||
| 	void _notification(int what); | ||||
| 	virtual void unhandled_input(Ref<InputEvent> const &event) override; | ||||
| 
 | ||||
| 	void set_mouselook_speed(Vector2 speed); | ||||
| 	Vector2 get_mouselook_speed() const; | ||||
| 	void set_look_speed(Vector2 speed); | ||||
| 	Vector2 get_look_speed() const; | ||||
| 
 | ||||
| 	void set_action_move_left(String action); | ||||
| 	String get_action_move_left() const; | ||||
| 	void set_action_move_right(String action); | ||||
|  | @ -20,14 +26,33 @@ public: | |||
| 	void set_action_move_back(String action); | ||||
| 	String get_action_move_back() const; | ||||
| 
 | ||||
| 	void set_action_look_left(String action); | ||||
| 	String get_action_look_left() const; | ||||
| 	void set_action_look_right(String action); | ||||
| 	String get_action_look_right() const; | ||||
| 	void set_action_look_up(String action); | ||||
| 	String get_action_look_up() const; | ||||
| 	void set_action_look_down(String action); | ||||
| 	String get_action_look_down() const; | ||||
| 
 | ||||
| public: | ||||
| 	static String const signal_movement; | ||||
| 	static String const signal_look; | ||||
| 	static String const signal_mouselook; | ||||
| 
 | ||||
| private: | ||||
| 	Vector2 mouselook_speed{ 0.001f, 0.001f }; | ||||
| 	Vector2 look_speed{ 1.75f, 1.75f }; | ||||
| 
 | ||||
| 	String action_move_left{ "move_left" }; | ||||
| 	String action_move_right{ "move_right" }; | ||||
| 	String action_move_forward{ "move_forward" }; | ||||
| 	String action_move_back{ "move_back" }; | ||||
| 
 | ||||
| 	String action_look_left{ "look_left" }; | ||||
| 	String action_look_right{ "look_right" }; | ||||
| 	String action_look_up{ "look_up" }; | ||||
| 	String action_look_down{ "look_down" }; | ||||
| }; | ||||
| 
 | ||||
| #endif // !PLAYER_INPUT_H
 | ||||
|  |  | |||
|  | @ -2,10 +2,9 @@ | |||
| 
 | ||||
| #include "authority/actor_body.h" | ||||
| #include "authority/game_state.h" | ||||
| #include "authority/locale_marker.h" | ||||
| #include "authority/party_member_data.h" | ||||
| #include "authority/player_actor.h" | ||||
| #include "authority/player_input.h" | ||||
| #include "authority/third_person_camera.h" | ||||
| #include "core/config/engine.h" | ||||
| #include "core/object/class_db.h" | ||||
| 
 | ||||
|  | @ -16,11 +15,10 @@ void initialize_authority_module(ModuleInitializationLevel p_level) { | |||
| 		return; | ||||
| 	} | ||||
| 	GDREGISTER_CLASS(GameState); | ||||
| 	GDREGISTER_RUNTIME_CLASS(LocaleMarker); | ||||
| 	GDREGISTER_RUNTIME_CLASS(PartyMemberData); | ||||
| 	GDREGISTER_CLASS(ActorBody); | ||||
| 	GDREGISTER_CLASS(PlayerActor); | ||||
| 	GDREGISTER_CLASS(PlayerInput); | ||||
| 	GDREGISTER_CLASS(ThirdPersonCamera); | ||||
| 
 | ||||
| 	game_state = memnew(GameState); | ||||
| 	Engine::get_singleton()->add_singleton(Engine::Singleton("GameState", GameState::get_singleton())); | ||||
|  |  | |||
							
								
								
									
										54
									
								
								modules/authority/third_person_camera.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								modules/authority/third_person_camera.cpp
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | |||
| #include "third_person_camera.h" | ||||
| #include "player_input.h" | ||||
| 
 | ||||
| void ThirdPersonCamera::_bind_methods() { | ||||
| } | ||||
| 
 | ||||
| void ThirdPersonCamera::ready() { | ||||
| 	set_process(true); | ||||
| 	if (PlayerInput * player_input{ cast_to<PlayerInput>(get_node(NodePath("%PlayerInput"))) }) { | ||||
| 		player_input->connect(PlayerInput::signal_look, callable_mp(this, &self_type::on_look_input)); | ||||
| 		player_input->connect(PlayerInput::signal_mouselook, callable_mp(this, &self_type::on_mouselook_input)); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void ThirdPersonCamera::process(double delta) { | ||||
| 	this->look_rotation += look_rotation_motion * delta; | ||||
| 	this->look_rotation.y = CLAMP(this->look_rotation.y, -Math_PI / 2.5, Math_PI / 2.5); | ||||
| 	Vector3 pivot{ get_parent_node_3d()->get_global_position() }; | ||||
| 	pivot.y += this->height; | ||||
| 	Vector3 offset{ 0.f, 0.f, this->distance }; | ||||
| 	offset.rotate({ 1.f, 0.f, 0.f }, this->look_rotation.y); | ||||
| 	offset.rotate({ 0.f, 1.f, 0.f }, this->look_rotation.x); | ||||
| 	look_at_from_position(pivot + offset, pivot); | ||||
| } | ||||
| 
 | ||||
| void ThirdPersonCamera::on_look_input(Vector2 input) { | ||||
| 	this->look_rotation_motion = input; | ||||
| } | ||||
| 
 | ||||
| void ThirdPersonCamera::on_mouselook_input(Vector2 input) { | ||||
| 	this->look_rotation -= input; | ||||
| } | ||||
| 
 | ||||
| void ThirdPersonCamera::_notification(int what) { | ||||
| 	if (Engine::get_singleton()->is_editor_hint()) { | ||||
| 		return; | ||||
| 	} | ||||
| 	switch (what) { | ||||
| 		case NOTIFICATION_READY: | ||||
| 			ready(); | ||||
| 			break; | ||||
| 		case NOTIFICATION_PROCESS: | ||||
| 			process(get_process_delta_time()); | ||||
| 			break; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void ThirdPersonCamera::set_base_rotation_speed(Vector2 value) { | ||||
| 	this->base_rotation_speed = value; | ||||
| } | ||||
| 
 | ||||
| Vector2 ThirdPersonCamera::get_base_rotation_speed() const { | ||||
| 	return this->base_rotation_speed; | ||||
| } | ||||
							
								
								
									
										29
									
								
								modules/authority/third_person_camera.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								modules/authority/third_person_camera.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| #ifndef THIRD_PERSON_CAMERA_H | ||||
| #define THIRD_PERSON_CAMERA_H | ||||
| 
 | ||||
| #include "scene/3d/camera_3d.h" | ||||
| 
 | ||||
| class ThirdPersonCamera : public Camera3D { | ||||
| 	GDCLASS(ThirdPersonCamera, Camera3D); | ||||
| 	static void _bind_methods(); | ||||
| 	void ready(); | ||||
| 	void process(double delta); | ||||
| 	void on_look_input(Vector2 input); | ||||
| 	void on_mouselook_input(Vector2 input); | ||||
| 
 | ||||
| public: | ||||
| 	void _notification(int what); | ||||
| 
 | ||||
| 	void set_base_rotation_speed(Vector2 value); | ||||
| 	Vector2 get_base_rotation_speed() const; | ||||
| 
 | ||||
| private: | ||||
| 	Vector2 look_rotation_motion{ 0.f, 0.f }; | ||||
| 	Vector2 look_rotation{ 0.f, 0.f }; | ||||
| 
 | ||||
| 	Vector2 base_rotation_speed{ 0.1f, 0.1f }; | ||||
| 	float distance{ 3.f }; | ||||
| 	float height{ 2.2f }; | ||||
| }; | ||||
| 
 | ||||
| #endif // !THIRD_PERSON_CAMERA_H
 | ||||
|  | @ -1,7 +1,6 @@ | |||
| [gd_scene load_steps=7 format=3 uid="uid://bqaoxvqgrbi3v"] | ||||
| [gd_scene load_steps=6 format=3 uid="uid://bqaoxvqgrbi3v"] | ||||
| 
 | ||||
| [ext_resource type="Material" uid="uid://cbuk8uxxuj7j5" path="res://materials/grids/grass.tres" id="1_etye1"] | ||||
| [ext_resource type="Material" uid="uid://ke4yek3xtin5" path="res://materials/grids/bricks.tres" id="1_sb1vi"] | ||||
| [ext_resource type="PackedScene" uid="uid://cykd1a23ria6k" path="res://objects/characters/player_actor.tscn" id="3_vuk2b"] | ||||
| 
 | ||||
| [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sb1vi"] | ||||
|  | @ -19,572 +18,22 @@ glow_enabled = true | |||
| 
 | ||||
| [node name="City" type="Node"] | ||||
| 
 | ||||
| [node name="PartySelectionUI" type="CanvasLayer" parent="."] | ||||
| 
 | ||||
| [node name="VBoxContainer" type="VBoxContainer" parent="PartySelectionUI"] | ||||
| anchors_preset = 6 | ||||
| anchor_left = 1.0 | ||||
| anchor_top = 0.5 | ||||
| anchor_right = 1.0 | ||||
| anchor_bottom = 0.5 | ||||
| offset_left = -298.0 | ||||
| offset_top = -211.0 | ||||
| offset_bottom = 211.0 | ||||
| grow_horizontal = 0 | ||||
| grow_vertical = 2 | ||||
| 
 | ||||
| [node name="Level" type="Node3D" parent="."] | ||||
| 
 | ||||
| [node name="WorldEnvironment" type="WorldEnvironment" parent="Level"] | ||||
| [node name="WorldEnvironment" type="WorldEnvironment" parent="."] | ||||
| environment = SubResource("Environment_wwygw") | ||||
| 
 | ||||
| [node name="DirectionalLight3D" type="DirectionalLight3D" parent="Level"] | ||||
| transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866026, -0.500003, 0.749999, -0.43301, 0, 0, 0) | ||||
| [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] | ||||
| transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) | ||||
| shadow_enabled = true | ||||
| 
 | ||||
| [node name="CSGWorld" type="CSGCombiner3D" parent="Level"] | ||||
| use_collision = true | ||||
| 
 | ||||
| [node name="CSGBox3D2" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.7726, 1.24028, -3.26613) | ||||
| size = Vector3(29.3063, 2.53036, 32.2042) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| operation = 2 | ||||
| size = Vector3(28.3818, 4.94897, 31.2627) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.3707, 0, 8.21931) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D10" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(0.996095, -0.0882858, 0, 0.0882858, 0.996095, 0, 0, 0, 1, -4.27235, 1.64007, -16.0551) | ||||
| operation = 2 | ||||
| size = Vector3(17.209, 2.77515, 1.67773) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D11" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(-0.662908, 0.748701, 0, -0.748701, -0.662908, 0, 0, 0, 1, 1.99536, 0.140041, -16.0551) | ||||
| operation = 2 | ||||
| size = Vector3(3.51099, 4.26892, 1.67773) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D12" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(0.0515306, -0.596407, 0.801026, -0.589269, -0.665739, -0.45777, 0.806292, -0.448431, -0.38575, 13.6247, 0.402275, -15.0203) | ||||
| operation = 2 | ||||
| size = Vector3(4.65393, 4.26892, 4.29919) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D9" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.990234, 0.139415, 0, -0.139415, 0.990234, -15.0347, 1.84148, -10.1624) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 15.628) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(0.996356, 0.0852952, 0, -0.0852952, 0.996356, 0, 0, 0, 1, -6.08641, 2.3849, 15.0748) | ||||
| operation = 2 | ||||
| size = Vector3(18.0761, 4.49255, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D13" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(0.940934, 0.33859, 0, -0.33859, 0.940934, 0, 0, 0, 1, 10.9771, 1.22338, 15.0748) | ||||
| operation = 2 | ||||
| size = Vector3(5.48767, 4.49255, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(0.998184, -0.0602297, 0, 0.0602297, 0.998184, 0, 0, 0, 1, -11.169, 1.83497, 16.5285) | ||||
| operation = 2 | ||||
| size = Vector3(7.92215, 4.49255, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D2"] | ||||
| transform = Transform3D(0.938076, -0.346428, 0, 0.346428, 0.938076, 0, 0, 0, 1, -8.1568, 0.67643, 16.5285) | ||||
| operation = 2 | ||||
| size = Vector3(4.54713, 4.49255, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D9" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 17.3635, 1.24027, -22.297) | ||||
| size = Vector3(29.3063, 2.53036, 32.2042) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| operation = 2 | ||||
| size = Vector3(28.3818, 4.94897, 31.2627) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.3707, 0, 8.21931) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.67738, 1.90735e-06, -15.8587) | ||||
| operation = 2 | ||||
| size = Vector3(11.8087, 4.94897, 1.39062) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D10" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| transform = Transform3D(0.983341, 0.181772, 0, -0.181772, 0.983341, 0, 0, 0, 1, 5.71055, 0.339279, 15.5698) | ||||
| operation = 2 | ||||
| size = Vector3(9.78, 4.23425, 1.39062) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D9" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -14.4351, 1.90735e-06, -3.8005) | ||||
| operation = 2 | ||||
| size = Vector3(11.8087, 4.94897, 1.39062) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| transform = Transform3D(0.835299, 0.549796, 0, -0.549796, 0.835299, 0, 0, 0, 1, -2.58652, 1.00152, -15.8587) | ||||
| operation = 2 | ||||
| size = Vector3(2.53568, 4.46423, 1.39062) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D9"] | ||||
| transform = Transform3D(0.835299, 0.549796, -9.2008e-09, -0.491933, 0.747388, 0.446557, 0.245515, -0.373009, 0.894755, -14.5944, -0.54182, -15.1699) | ||||
| operation = 2 | ||||
| size = Vector3(3, 4.46423, 2.88232) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(0.94881, 0, 0.315848, 0, 1, 0, -0.315848, 0, 0.94881, -7.66859, 1.24028, 32.2569) | ||||
| size = Vector3(22.6908, 2.53036, 26.0577) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| operation = 2 | ||||
| size = Vector3(21.699, 4.94897, 24.7637) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.81546, 0, 1.44135) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D12" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(0.966641, 0.256107, 0.00379327, -0.221096, 0.841791, -0.492448, -0.129312, 0.475181, 0.870333, 10.1198, 1.29747, 12.165) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 5.69867) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(0.861603, -0.507583, 0, 0.507583, 0.861603, 0, 0, 0, 1, 1.68174, 0.365051, 12.4396) | ||||
| operation = 2 | ||||
| size = Vector3(5.18265, 4.66061, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(0.956661, -0.291203, 0, 0.291203, 0.956661, 0, 8.9407e-08, -7.45058e-09, 1, -5.16157, 2.49941, 12.5804) | ||||
| operation = 2 | ||||
| size = Vector3(8.79707, 4.04699, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D11" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(-1.49012e-07, 6.70552e-08, -1, 0.291203, 0.956661, 0, 0.956661, -0.291203, -5.96046e-08, -10.3324, 0.55706, 9.10962) | ||||
| operation = 2 | ||||
| size = Vector3(8.30031, 5.37523, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(0.942027, 0.335534, 0, -0.335534, 0.942028, 0, 2.38419e-07, 7.45058e-08, 1, 1.96285, 0.912893, -11.3267) | ||||
| operation = 2 | ||||
| size = Vector3(20.6193, 10.1297, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D9" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(2.98023e-07, -2.98023e-08, 1, 0.477634, 0.878559, 0, -0.878558, 0.477634, 0, -11.4397, 0.843881, -2.17569) | ||||
| operation = 2 | ||||
| size = Vector3(9.11396, 5.37523, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D10" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D4"] | ||||
| transform = Transform3D(1.19209e-07, -4.47035e-08, 1, 0.22165, 0.975126, 0, -0.975125, 0.22165, 0, -11.4397, -1.17258, -1.42908) | ||||
| operation = 2 | ||||
| size = Vector3(9.26142, 5.37523, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(-0.980662, 0, -0.195706, 0, 1, 0, 0.195706, 0, -0.980662, 16.4482, 1.24028, 10.8159) | ||||
| size = Vector3(22.6908, 2.53036, 26.0577) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| operation = 2 | ||||
| size = Vector3(21.699, 4.94897, 24.7637) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.81546, 0, 1.44135) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D11" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, 9.81546, 1.02972, -11.1309) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 2.88953, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D12" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(0.968409, -0.249366, -7.45058e-08, 0.249366, 0.968409, 0, 7.21521e-08, -1.85792e-08, 1, 7.47525, 1.68203, -11.1309) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 2.88953, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D9" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, -7.5132, 2.28486, -10.4518) | ||||
| operation = 2 | ||||
| size = Vector3(8.62306, 4.94897, 5.58841) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D10" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(0.920047, -0.391807, -7.45058e-08, 0.391807, 0.920047, 0, 7.45058e-08, -2.98023e-08, 1, -6.59657, 0.52667, -12.3894) | ||||
| operation = 2 | ||||
| size = Vector3(7.21283, 3.23804, 1.71315) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, -1.74361, 1.34271, 10.7097) | ||||
| operation = 2 | ||||
| size = Vector3(19.7208, 2.26355, 5.36632) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(0.90949, -0.415725, -7.45058e-08, 0.415725, 0.90949, 0, 5.96046e-08, -2.98023e-08, 1, 6.5508, 1.03969, 12.4855) | ||||
| operation = 2 | ||||
| size = Vector3(3.29733, 2.26355, 1.9962) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D7"] | ||||
| transform = Transform3D(0.872811, 0.488058, -7.45058e-08, -0.488058, 0.872811, 0, 5.96046e-08, 4.47035e-08, 1, 3.25758, 0.0104947, 12.4855) | ||||
| operation = 2 | ||||
| size = Vector3(3.29733, 3.41986, 1.9962) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.4648, 1.24028, -35.2034) | ||||
| size = Vector3(22.6908, 2.53036, 26.0577) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D5"] | ||||
| operation = 2 | ||||
| size = Vector3(21.699, 4.94897, 24.7637) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.81546, 0, 1.44135) | ||||
| operation = 2 | ||||
| size = Vector3(5.48248, 4.94897, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D5"] | ||||
| transform = Transform3D(0.922282, -0.386518, 0, 0.386518, 0.922282, 0, 0, 0, 1, -1.86533, 0.1865, 12.965) | ||||
| operation = 2 | ||||
| size = Vector3(7.06031, 5.05847, 2.48825) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D5"] | ||||
| transform = Transform3D(-4.03142e-08, 1.68952e-08, 1, 0.386518, 0.922282, 0, -0.922282, 0.386518, -4.37114e-08, -10.9717, 0.1865, -0.139679) | ||||
| operation = 2 | ||||
| size = Vector3(7.06031, 5.05847, 2.48825) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D9" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D5"] | ||||
| transform = Transform3D(-0.999949, 0.0101053, -8.74228e-08, 0.0101053, 0.999949, 0, 8.74183e-08, -8.83436e-10, -1, 1.46112, -0.431518, -12.5492) | ||||
| operation = 2 | ||||
| size = Vector3(10.2582, 5.05847, 2.48825) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGWorld/CSGBox3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.856465, 0.516204, 0, -0.516204, 0.856465, 11.0115, 0, -6.14323) | ||||
| operation = 2 | ||||
| size = Vector3(3.41214, 4.94897, 4.52136) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0259626, -3.00393, -0.963224) | ||||
| size = Vector3(86.0781, 6, 106.223) | ||||
| material = ExtResource("1_etye1") | ||||
| 
 | ||||
| [node name="CSGBox3D3" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.295873, -0.0920334, -20.6882) | ||||
| size = Vector3(5.66602, 0.212601, 66.5905) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(0.951525, 0, 0.307573, 0, 1, 0, -0.307573, 0, 0.951525, 6.34913, -0.0920353, 30.9568) | ||||
| size = Vector3(5.66602, 0.212601, 40.6149) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGWorld"] | ||||
| transform = Transform3D(0.979392, 0, 0.201967, 0, 1, 0, -0.201967, 0, 0.979392, 2.65383, -0.0920353, 13.0373) | ||||
| size = Vector3(5.66602, 0.212601, 22.0021) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGCombiner3D" type="CSGCombiner3D" parent="Level"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.7127, -3.8147e-06, -4.44497) | ||||
| use_collision = true | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.943035, 2.69934, 0.370387) | ||||
| size = Vector3(13.2101, 6.39868, 18.7856) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D3" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.779079, 3.9671, 0.421809) | ||||
| operation = 2 | ||||
| size = Vector3(12.1248, 7.93005, 17.5173) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D2" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05528, 5.6087, 1.09461) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.993972, -0.10963, 0, 0.10963, 0.993972, -6.20065, 6.81794, -1.62846) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -2.90541, 6.09294, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -0.501738, 6.60845, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(-4.11049e-08, 0.924792, 0.380473, 1.48684e-08, 0.380473, -0.924792, -1, -3.23565e-08, -2.93895e-08, 1.50422, 4.57072, -8.66012) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 3.98828) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGCombiner3D"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.47246, 0.911386, 4.88385) | ||||
| operation = 2 | ||||
| size = Vector3(1.52942, 1.75981, 1.18262) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGCombiner3D5" type="CSGCombiner3D" parent="Level"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.3902, -3.8147e-06, -34.9045) | ||||
| use_collision = true | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.943035, 2.69934, 0.370387) | ||||
| size = Vector3(13.2101, 6.39868, 18.7856) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D3" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.779079, 3.9671, 0.421809) | ||||
| operation = 2 | ||||
| size = Vector3(12.1248, 7.93005, 17.5173) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D2" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05528, 5.6087, 1.09461) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.993972, -0.10963, 0, 0.10963, 0.993972, -6.20065, 6.81794, -1.62846) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -2.90541, 6.09294, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -0.501738, 6.60845, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(-4.11049e-08, 0.924792, 0.380473, 1.48684e-08, 0.380473, -0.924792, -1, -3.23565e-08, -2.93895e-08, 1.44811, 4.70709, -8.66012) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4.2832) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGCombiner3D5"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.47246, 0.911386, 4.88385) | ||||
| operation = 2 | ||||
| size = Vector3(1.52942, 1.75981, 1.18262) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGCombiner3D2" type="CSGCombiner3D" parent="Level"] | ||||
| transform = Transform3D(0.947261, 0, 0.320464, 0, 1, 0, -0.320464, 0, 0.947261, -9.09123, 0, 34.072) | ||||
| use_collision = true | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.943035, 2.69934, 0.370387) | ||||
| size = Vector3(13.2101, 6.39868, 18.7856) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D3" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.779079, 3.9671, 0.421809) | ||||
| operation = 2 | ||||
| size = Vector3(12.1248, 7.93005, 17.5173) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D2" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05528, 5.6087, 1.09461) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.993972, -0.10963, 0, 0.10963, 0.993972, -6.20065, 6.81794, -1.62846) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -2.90541, 6.09294, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -0.501738, 6.60845, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(-2.98023e-08, 0.924792, 0.380473, 1.48684e-08, 0.380473, -0.924792, -1, -2.98023e-08, -6.70552e-08, 1.43882, 4.72967, -8.66012) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4.33203) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGCombiner3D2"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.47246, 0.911386, 4.88385) | ||||
| operation = 2 | ||||
| size = Vector3(1.52942, 1.75981, 1.18262) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGCombiner3D3" type="CSGCombiner3D" parent="Level"] | ||||
| transform = Transform3D(-0.979862, 0, -0.199676, 0, 1, 0, 0.199676, 0, -0.979862, 18.4676, 0, 11.5749) | ||||
| use_collision = true | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.943035, 2.69934, 0.370387) | ||||
| size = Vector3(13.2101, 6.39868, 18.7856) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D3" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.779079, 3.9671, 0.421809) | ||||
| operation = 2 | ||||
| size = Vector3(12.1248, 7.93005, 17.5173) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D2" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05528, 5.6087, 1.09461) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.993972, -0.10963, 0, 0.10963, 0.993972, -6.20065, 6.81794, -1.62846) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -2.90541, 6.09294, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -0.501738, 6.60845, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(-4.11049e-08, 0.924792, 0.380473, 1.48684e-08, 0.380473, -0.924792, -1, -3.23565e-08, -2.93895e-08, 1.55623, 4.44428, -8.66012) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 3.71484) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGCombiner3D3"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.47246, 0.911386, 4.88385) | ||||
| operation = 2 | ||||
| size = Vector3(1.52942, 1.75981, 1.18262) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGCombiner3D4" type="CSGCombiner3D" parent="Level"] | ||||
| transform = Transform3D(-0.970654, 0, 0.240482, 0, 1, 0, -0.240482, 0, -0.970654, 19.1359, 0, -21.0191) | ||||
| use_collision = true | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.943035, 2.69934, 0.370387) | ||||
| size = Vector3(13.2101, 6.39868, 18.7856) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D3" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.779079, 3.9671, 0.421809) | ||||
| operation = 2 | ||||
| size = Vector3(12.1248, 7.93005, 17.5173) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D2" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05528, 5.6087, 1.09461) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D5" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.993972, -0.10963, 0, 0.10963, 0.993972, -6.20065, 6.81794, -1.62846) | ||||
| operation = 2 | ||||
| size = Vector3(6.36378, 4.64685, 18.8601) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D6" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -2.90541, 6.09294, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D7" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(-4.11049e-08, 0.441193, 0.897412, 1.48684e-08, 0.897412, -0.441193, -1, -4.79209e-09, -4.34479e-08, -0.501738, 6.60845, 9.63982) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 4) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D8" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(-4.11049e-08, 0.924792, 0.380473, 1.48684e-08, 0.380473, -0.924792, -1, -3.23565e-08, -2.93895e-08, 1.55623, 4.44428, -8.66012) | ||||
| operation = 2 | ||||
| size = Vector3(2.34985, 3.30096, 3.71484) | ||||
| material = ExtResource("1_sb1vi") | ||||
| 
 | ||||
| [node name="CSGBox3D4" type="CSGBox3D" parent="Level/CSGCombiner3D4"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.47246, 0.911386, 4.88385) | ||||
| operation = 2 | ||||
| size = Vector3(1.52942, 1.75981, 1.18262) | ||||
| material = ExtResource("1_sb1vi") | ||||
| [node name="CampEntrance" type="Node3D" parent="."] | ||||
| unique_name_in_owner = true | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2797, -0.00393486, -42.0831) | ||||
| 
 | ||||
| [node name="PlayerActor" parent="." instance=ExtResource("3_vuk2b")] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.6368, -0.00393009, -46.4616) | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0171704, -0.00572681, 0.28793) | ||||
| 
 | ||||
| [node name="CSGBox3D" type="CSGBox3D" parent="."] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.505729, 0) | ||||
| use_collision = true | ||||
| size = Vector3(100, 1, 100) | ||||
| material = ExtResource("1_etye1") | ||||
|  |  | |||
|  | @ -1,126 +0,0 @@ | |||
| [gd_scene load_steps=11 format=3 uid="uid://mn086drdvyym"] | ||||
| 
 | ||||
| [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oejri"] | ||||
| sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) | ||||
| ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) | ||||
| 
 | ||||
| [sub_resource type="Sky" id="Sky_urvl1"] | ||||
| sky_material = SubResource("ProceduralSkyMaterial_oejri") | ||||
| 
 | ||||
| [sub_resource type="Environment" id="Environment_ers5l"] | ||||
| background_mode = 2 | ||||
| sky = SubResource("Sky_urvl1") | ||||
| tonemap_mode = 2 | ||||
| glow_enabled = true | ||||
| 
 | ||||
| [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oejri"] | ||||
| albedo_color = Color(0.16206, 0.18, 0.1332, 1) | ||||
| 
 | ||||
| [sub_resource type="QuadMesh" id="QuadMesh_oejri"] | ||||
| size = Vector2(100, 100) | ||||
| orientation = 1 | ||||
| 
 | ||||
| [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_urvl1"] | ||||
| albedo_color = Color(0.21, 0.232, 0.25, 1) | ||||
| 
 | ||||
| [sub_resource type="CylinderMesh" id="CylinderMesh_ers5l"] | ||||
| top_radius = 10.0 | ||||
| bottom_radius = 10.0 | ||||
| height = 0.5 | ||||
| 
 | ||||
| [sub_resource type="CylinderShape3D" id="CylinderShape3D_c3pkw"] | ||||
| radius = 2.86377 | ||||
| 
 | ||||
| [sub_resource type="PrismMesh" id="PrismMesh_oejri"] | ||||
| 
 | ||||
| [sub_resource type="BoxMesh" id="BoxMesh_oejri"] | ||||
| size = Vector3(0.53, 0.56, 1) | ||||
| 
 | ||||
| [node name="Map" type="Node3D"] | ||||
| 
 | ||||
| [node name="WorldEnvironment" type="WorldEnvironment" parent="."] | ||||
| environment = SubResource("Environment_ers5l") | ||||
| 
 | ||||
| [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] | ||||
| transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) | ||||
| shadow_enabled = true | ||||
| 
 | ||||
| [node name="MeshInstance3D" type="MeshInstance3D" parent="."] | ||||
| material_override = SubResource("StandardMaterial3D_oejri") | ||||
| mesh = SubResource("QuadMesh_oejri") | ||||
| 
 | ||||
| [node name="LocaleMarker" type="LocaleMarker" parent="."] | ||||
| locale_scene = "uid://bqaoxvqgrbi3v" | ||||
| entrance_path = "%CampEntrance" | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.8126, -1.90735e-06, -10.5129) | ||||
| 
 | ||||
| [node name="MeshInstance3D" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| material_override = SubResource("StandardMaterial3D_urvl1") | ||||
| mesh = SubResource("CylinderMesh_ers5l") | ||||
| 
 | ||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.1601, 0, 4.78461) | ||||
| shape = SubResource("CylinderShape3D_c3pkw") | ||||
| 
 | ||||
| [node name="Label3D" type="Label3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(1, 0, 4.37114e-08, -4.37114e-08, 1.91069e-15, 1, 0, -1, 1.91069e-15, 0, 1.03264, 0) | ||||
| pixel_size = 0.1 | ||||
| text = "City | ||||
| " | ||||
| 
 | ||||
| [node name="Label3D2" type="Label3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(1, 0, 4.37114e-08, -4.37114e-08, 1.91069e-15, 1, 0, -1, 1.91069e-15, -14.3197, 1.03264, 2.5534) | ||||
| pixel_size = 0.05 | ||||
| text = "Camp" | ||||
| 
 | ||||
| [node name="Label3D3" type="Label3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(1, 0, 4.37114e-08, -4.37114e-08, 1.91069e-15, 1, 0, -1, 1.91069e-15, -15.5085, 1.03264, 4.74225) | ||||
| pixel_size = 0.05 | ||||
| modulate = Color(1, 0, 0, 1) | ||||
| text = "! | ||||
| " | ||||
| 
 | ||||
| [node name="MeshInstance3D2" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -15.7257, 0, 5.36808) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D3" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -15.7232, 0, 4.67118) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D4" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -15.807, 0, 4.03467) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D5" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -13.7496, -4.76837e-07, 2.95756) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D6" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -13.2813, -4.76837e-07, 3.76329) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D7" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -13.2956, -4.76837e-07, 4.4297) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D8" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -13.3204, -4.76837e-07, 5.30799) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="MeshInstance3D9" type="MeshInstance3D" parent="LocaleMarker"] | ||||
| transform = Transform3D(-0.0195116, 0, 0.99981, 0, 1, 0, -0.99981, 0, -0.0195116, -13.3516, -4.76837e-07, 6.29061) | ||||
| mesh = SubResource("PrismMesh_oejri") | ||||
| 
 | ||||
| [node name="Camera3D" type="Camera3D" parent="."] | ||||
| transform = Transform3D(1, 0, 0, 0, 0.258819, 0.965926, 0, -0.965926, 0.258819, 0, 26.4443, 6.29706) | ||||
| fov = 52.6 | ||||
| 
 | ||||
| [node name="MeshInstance3D2" type="MeshInstance3D" parent="."] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.292486, 0) | ||||
| mesh = SubResource("BoxMesh_oejri") | ||||
| 
 | ||||
| [node name="Label3D" type="Label3D" parent="MeshInstance3D2"] | ||||
| transform = Transform3D(1, 0, 4.37114e-08, -4.37114e-08, 1.91069e-15, 1, 0, -1, 1.91069e-15, 0, 1.03264, -0.956246) | ||||
| pixel_size = 0.05 | ||||
| text = "You" | ||||
|  | @ -17,5 +17,5 @@ mesh = SubResource("CylinderMesh_66ixd") | |||
| [node name="PlayerInput" type="PlayerInput" parent="."] | ||||
| unique_name_in_owner = true | ||||
| 
 | ||||
| [node name="Camera3D" type="Camera3D" parent="."] | ||||
| [node name="Camera3D" type="ThirdPersonCamera" parent="."] | ||||
| transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 4.76837e-07, 1.8675, -2.90407) | ||||
|  |  | |||
|  | @ -11,29 +11,57 @@ config_version=5 | |||
| [application] | ||||
| 
 | ||||
| config/name="authority" | ||||
| run/main_scene="uid://mn086drdvyym" | ||||
| run/main_scene="uid://bqaoxvqgrbi3v" | ||||
| config/features=PackedStringArray("4.4", "Forward Plus") | ||||
| config/icon="res://icon.svg" | ||||
| 
 | ||||
| [display] | ||||
| 
 | ||||
| window/vsync/vsync_mode=2 | ||||
| 
 | ||||
| [input] | ||||
| 
 | ||||
| move_left={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| move_right={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| move_forward={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| move_back={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| look_left={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| look_right={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| look_up={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null) | ||||
| ] | ||||
| } | ||||
| look_down={ | ||||
| "deadzone": 0.2, | ||||
| "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null) | ||||
| ] | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Sara
						Sara