diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/Immagini/Instant Camera.glb b/Immagini/Instant Camera.glb new file mode 100644 index 0000000..4171533 Binary files /dev/null and b/Immagini/Instant Camera.glb differ diff --git a/Immagini/Instant Camera.glb.import b/Immagini/Instant Camera.glb.import new file mode 100644 index 0000000..de17990 --- /dev/null +++ b/Immagini/Instant Camera.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://djswo64leq8be" +path="res://.godot/imported/Instant Camera.glb-d676c6496e8f2fa30a1886c422ab8f14.scn" + +[deps] + +source_file="res://Immagini/Instant Camera.glb" +dest_files=["res://.godot/imported/Instant Camera.glb-d676c6496e8f2fa30a1886c422ab8f14.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Immagini/icon.svg b/Immagini/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/Immagini/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Immagini/icon.svg.import b/Immagini/icon.svg.import new file mode 100644 index 0000000..c6443ea --- /dev/null +++ b/Immagini/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl0v7agi67fbp" +path="res://.godot/imported/icon.svg-6ee88c14468cec77998a5495cdcdb4e8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Immagini/icon.svg" +dest_files=["res://.godot/imported/icon.svg-6ee88c14468cec77998a5495cdcdb4e8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/Immagini/image.png b/Immagini/image.png new file mode 100644 index 0000000..46d079e Binary files /dev/null and b/Immagini/image.png differ diff --git a/Immagini/image.png.import b/Immagini/image.png.import new file mode 100644 index 0000000..800ff21 --- /dev/null +++ b/Immagini/image.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0pl04wrfx36e" +path="res://.godot/imported/image.png-8d623c43e757da6951aebe337a8c0088.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Immagini/image.png" +dest_files=["res://.godot/imported/image.png-8d623c43e757da6951aebe337a8c0088.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Immagini/open book.glb b/Immagini/open book.glb new file mode 100644 index 0000000..b433190 Binary files /dev/null and b/Immagini/open book.glb differ diff --git a/Immagini/open book.glb.import b/Immagini/open book.glb.import new file mode 100644 index 0000000..da62870 --- /dev/null +++ b/Immagini/open book.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://roh2pkd0qx72" +path="res://.godot/imported/open book.glb-f78a289fb2e101287e54b692e2f3f62f.scn" + +[deps] + +source_file="res://Immagini/open book.glb" +dest_files=["res://.godot/imported/open book.glb-f78a289fb2e101287e54b692e2f3f62f.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png b/Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png new file mode 100644 index 0000000..dbe3fb1 Binary files /dev/null and b/Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png differ diff --git a/Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png.import b/Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png.import new file mode 100644 index 0000000..3f0d4a1 --- /dev/null +++ b/Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvyv0o1c7ynqq" +path="res://.godot/imported/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png-29476413e0699411187377d79c742911.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png" +dest_files=["res://.godot/imported/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png-29476413e0699411187377d79c742911.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Scene/base.tscn b/Scene/base.tscn new file mode 100644 index 0000000..706d54d --- /dev/null +++ b/Scene/base.tscn @@ -0,0 +1,182 @@ +[gd_scene load_steps=18 format=3 uid="uid://g3ocaiur6ojd"] + +[ext_resource type="Script" uid="uid://b2chtre60m62g" path="res://Script/base.gd" id="1_iwpok"] +[ext_resource type="PackedScene" uid="uid://mcavsjo6dgd0" path="res://Scene/player.tscn" id="3_x5x41"] +[ext_resource type="PackedScene" uid="uid://bk2nxxt5jfmhw" path="res://visto.tscn" id="4_pntdf"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_g5ejs"] +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_rpg24"] +sky_material = SubResource("ProceduralSkyMaterial_g5ejs") + +[sub_resource type="Environment" id="Environment_3vi8l"] +background_mode = 2 +sky = SubResource("Sky_rpg24") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8rhti"] +albedo_color = Color(0.513305, 0.726962, 0.328452, 1) + +[sub_resource type="PlaneMesh" id="PlaneMesh_g5ejs"] +size = Vector2(20, 20) + +[sub_resource type="BoxShape3D" id="BoxShape3D_rpg24"] +size = Vector3(20, 0, 20) + +[sub_resource type="PlaneMesh" id="PlaneMesh_ohhpf"] +size = Vector2(40, 40) + +[sub_resource type="GDScript" id="GDScript_0ce0i"] +script/source = "extends MeshInstance3D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass +" + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_8rhti"] +data = PackedVector3Array(20, 0, 20, -20, 0, 20, 20, 0, -20, -20, 0, 20, -20, 0, -20, 20, 0, -20) + +[sub_resource type="BoxMesh" id="BoxMesh_3vi8l"] + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_3vi8l"] +points = PackedVector3Array(-0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ohhpf"] +albedo_color = Color(0.958686, 0.172163, 5.77569e-07, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_21bcp"] +albedo_color = Color(0.178295, 0.644373, 0.775982, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tpea4"] +albedo_color = Color(0.725661, 0.571458, 0.0828246, 1) + +[node name="Node3D" type="Node3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0392878, 5.60284e-05, 0.0819645) +script = ExtResource("1_iwpok") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_3vi8l") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.982935, -0.149758, 0.106821, 0, 0.580703, 0.814116, -0.183951, 0.800223, -0.570793, 0, 0, 0) +shadow_enabled = true + +[node name="terra" type="MeshInstance3D" parent="."] +transform = Transform3D(1.91805, 0, 0, 0, 1, 0, 0, 0, 1.94726, -0.131999, -0.0807834, 0.0995938) +material_override = SubResource("StandardMaterial3D_8rhti") +mesh = SubResource("PlaneMesh_g5ejs") +metadata/_edit_group_ = true + +[node name="StaticBody3D" type="StaticBody3D" parent="terra"] +metadata/_edit_group_ = true + +[node name="CollisionShape3D" type="CollisionShape3D" parent="terra/StaticBody3D"] +shape = SubResource("BoxShape3D_rpg24") +metadata/_edit_group_ = true + +[node name="death" type="MeshInstance3D" parent="."] +transform = Transform3D(16.3, 0, 0, 0, 1, 0, 0, 0, 12.6, -0.0227752, -9.59846, -0.0194728) +visible = false +mesh = SubResource("PlaneMesh_ohhpf") +script = SubResource("GDScript_0ce0i") + +[node name="Area3D" type="Area3D" parent="death"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="death/Area3D"] +shape = SubResource("ConcavePolygonShape3D_8rhti") + +[node name="Player" parent="." instance=ExtResource("3_x5x41")] +transform = Transform3D(0.999995, 0.00271548, -0.00172492, -0.00271622, 0.999996, -0.0004321, 0.00172375, 0.000436761, 0.999999, 0, 1, 0) + +[node name="Wall" type="MeshInstance3D" parent="."] +transform = Transform3D(39.6553, 0, 0, 0, 5.08344, 0, 0, 0, 1.08613, 0.0282918, 0.14087, 19.0978) +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Wall"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Wall/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Wall2" type="MeshInstance3D" parent="."] +transform = Transform3D(39.6553, 0, 0, 0, 5.08344, 0, 0, 0, 1.08613, 0.028, 0.141, -19.098) +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Wall2"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Wall2/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Wall3" type="MeshInstance3D" parent="."] +transform = Transform3D(-1.73339e-06, 0, -1.08613, 0, 5.08344, 0, 39.6553, 0, -4.74763e-08, 19.098, 0.141, 0) +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Wall3"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Wall3/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Wall4" type="MeshInstance3D" parent="."] +transform = Transform3D(-1.73339e-06, 0, -1.08613, 0, 5.08344, 0, 39.6553, 0, -4.74763e-08, -19.098, 0.141, 0) +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Wall4"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Wall4/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Cubo_red" type="MeshInstance3D" parent="."] +transform = Transform3D(2.9, 0, 0, 0, 1, 0, 0, 0, 3.2, -5.31345, 0.14087, 12.8216) +material_override = SubResource("StandardMaterial3D_ohhpf") +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Cubo_red"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cubo_red/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Cubo_blu2" type="MeshInstance3D" parent="."] +transform = Transform3D(4.05226, 0, 0, 0, 4.47332, 0, 0, 0, 0.617615, 0.154456, 2.06792, -5.93461) +material_override = SubResource("StandardMaterial3D_21bcp") +mesh = SubResource("BoxMesh_3vi8l") +skeleton = NodePath("../Cubo_blu") + +[node name="StaticBody3D" type="StaticBody3D" parent="Cubo_blu2"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cubo_blu2/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Cubo_blu" type="MeshInstance3D" parent="."] +transform = Transform3D(2.9, 0, 0, 0, 1.5876, 0, 0, 0, 3.2, 0.0396042, 0.720582, 12.8395) +material_override = SubResource("StandardMaterial3D_21bcp") +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Cubo_blu"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cubo_blu/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="Cubo_yellow" type="MeshInstance3D" parent="."] +transform = Transform3D(2.9, 0, 0, 0, 2.60258, 0, 0, 0, 3.2, 5.26495, 1.22977, 12.8216) +material_override = SubResource("StandardMaterial3D_tpea4") +mesh = SubResource("BoxMesh_3vi8l") + +[node name="StaticBody3D" type="StaticBody3D" parent="Cubo_yellow"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cubo_yellow/StaticBody3D"] +shape = SubResource("ConvexPolygonShape3D_3vi8l") + +[node name="focus" parent="." instance=ExtResource("4_pntdf")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.693508, 2.90325, 6.09433) + +[connection signal="body_entered" from="death/Area3D" to="." method="_on_area_3d_body_entered"] +[connection signal="entrato" from="focus" to="Player" method="_on_visible_entrato"] +[connection signal="uscito" from="focus" to="Player" method="_on_visible_uscito"] diff --git a/Scene/player.tres.gd b/Scene/player.tres.gd new file mode 100644 index 0000000..44718b8 --- /dev/null +++ b/Scene/player.tres.gd @@ -0,0 +1,222 @@ +extends CharacterBody3D + +const camera_SPEED = 3.5 +const Run_SPEED = 7.5 +const Walk_SPEED = 5.0 +const JUMP_VELOCITY = 4.5 +const RAY_LENGTH = 1000 + +@export var CAMERA_SPEED = 0.01 +@onready var camera := $Camera +@onready var player := $"." +@onready var camera3d := $Camera/Camera3D +@onready var target = $Control/target +@onready var CTR = $Shader/ColorRect +@onready var ray = $RayCast3D +@onready var img1 = $"Camera/open book/img1" +@onready var img2 = $"Camera/open book/img2" +@onready var img3 = $"Camera/open book/img3" +@onready var img4 = $"Camera/open book/img4" +@onready var img5 = $"Camera/open book/img5" +@onready var img6 = $"Camera/open book/img6" + +var is_going = false +var num = 0 +var img_num +var thread := Thread.new() +const freq = 2.0 +const amp = 0.08 +var t = 0.0 +var cam_walk = false +var not_book = true +var visto = false + +func _ready(): + #CTR.transform.x = get_viewport().size.x + #CTR.transform.y = get_viewport().size.y + + target.position.x = get_viewport().size.x / 2 - 626.0 / 2 + target.position.y = get_viewport().size.y / 2 - 470.0 / 2 + + + +# se vede un qualsiasi input +func _unhandled_input(event: InputEvent) -> void: + # cattura il mouse in modo che non si vede + if event is InputEventMouseButton: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + # mostra di nuovo il mouse + elif event.is_action_pressed("ui_cancel"): + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED: + if event is InputEventMouseMotion: + camera.rotate_y(-event.relative.x * CAMERA_SPEED) + camera3d.rotate_x(-event.relative.y * CAMERA_SPEED) + camera3d.rotation.x = clamp(camera3d.rotation.x, deg_to_rad(-50), deg_to_rad(60)) + + # prepara la fotocamera con la animazione + if event.is_action_pressed("fotocamera") and not_book: + is_going = true + $AnimPlayer.play('camera_anim') + cam_walk = true + # fa tornare indietro la fotocamera + if event.is_action_released("fotocamera") and not_book: + $AnimPlayer.play_backwards('camera_anim') + is_going = false + cam_walk = false + # fa la foto + if event.is_action_pressed('screenshot') and is_going and not_book: + $Control/target.set_visible(false)#ui che voglio togliere + if $AnimPlayer.is_playing() == false: + await get_tree().process_frame + await get_tree().process_frame + print('target'+str($Control/target.is_visible())) + #$Shader/CTR.set_visible(false) + take_screenshot() + $AnimPlayer2.play('scatto') + $Control/target.set_visible(true) + print('ciao') + # apre il libro + if Input.is_action_just_pressed('book'): + if not_book: + $AnimPlayer3.play('look_book') + not_book = false + else: + $AnimPlayer3.play_backwards("look_book") + not_book = true + + + + #questo serve per fare la foto +func take_screenshot() -> void: + $Control/target.set_visible(false) + # prende lo screenshot di quello che si vede come texure credo... + var img = get_viewport().get_texture().get_image() + var img_num = str(num) + if visto: + num += 1 + var file_path = "res://screenshot/image" + img_num + ".png" + print(num) + var img_copy := img.duplicate() + # usa un thread per salvare la foto senza laggare + var thread := Thread.new() + # non so che cazzo e callable me la detto chatgbt:) + var callable := func(): _save_image(img_copy, "res://screenshot/image" + img_num + ".png") + thread.start(callable) + print('img') + +func _save_image(img: Image, path: String) -> void: + if visto and num<=6: + img.save_png(path) + # per far vedere nel libro + var image = Image.load_from_file(path) + var texture = ImageTexture.create_from_image(image) + if num == 1: + img1.texture = texture + elif num == 2: + img2.texture = texture + elif num == 3: + img3.texture = texture + elif num == 4: + img4.texture = texture + elif num == 5: + img5.texture = texture + elif num == 6: + img6.texture = texture + + #apply_texture($"Camera/open book/Img1", path) + print('save') + +#func apply_texture(mesh_instance_node, texture_path): + #var texture = ImageTexture.new() + #var image = Image.new() + #image.load(texture_path) + #texture.create_from_image(image) + #if mesh_instance_node.material_override: + #mesh_instance_node.material_override.albedo_texture = texture + +func _physics_process(delta: float) -> void: + # Add the gravity. + if not is_on_floor(): + velocity += get_gravity() * delta + + # Handle jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var input_dir := Input.get_vector("left", "right", "up", "down") + var direction = (camera.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if Input.is_action_pressed("RUN") and is_on_floor() and cam_walk == false: + if direction: + velocity.x = direction.x * Run_SPEED + velocity.z = direction.z * Run_SPEED + else: + velocity.x = move_toward(velocity.x, 0, Run_SPEED) + velocity.z = move_toward(velocity.z, 0, Run_SPEED) + + elif Input.is_action_pressed("fotocamera"): + if direction: + velocity.x = direction.x * camera_SPEED + velocity.z = direction.z * camera_SPEED + else: + velocity.x = move_toward(velocity.x, 0, camera_SPEED) + velocity.z = move_toward(velocity.z, 0, camera_SPEED) + + + else: + if direction: + velocity.x = direction.x * Walk_SPEED + velocity.z = direction.z * Walk_SPEED + else: + velocity.x = move_toward(velocity.x, 0, Walk_SPEED) + velocity.z = move_toward(velocity.z, 0, Walk_SPEED) + + t += delta * velocity.length() * float(is_on_floor()) + camera.transform.origin = _headbob(t) + + + move_and_slide() + +func _headbob(time) -> Vector3: + var pos = Vector3.ZERO + pos.y = sin(time * freq) * amp+ 1.626 + pos.x = cos(time * freq / 2) * amp + return pos + + +func _on_timer_timeout() -> void: + if not ray.is_colliding(): + visto = true + print('visto') + else: + visto=false + print('non visto') + + +#func _on_anim_player_animation_finished(look_book) -> void: +# not_book = true +# print('finito') + +# controlla se il gruppo ORB (non mi ricordo come si chiama lol) visibile +func _on_visible_entrato() -> void: + + var focus = get_tree().get_nodes_in_group("punti focus") + var nearest_spawn_point = focus[0] + for focu in focus: + if focu.global_position.distance_to(player.global_position) < nearest_spawn_point.global_position.distance_to(player.global_position): + nearest_spawn_point = focu + + # usa ray per capire se e visibile (potrebbe essere un problema se ci sono tanti ORB) + ray.set_target_position(nearest_spawn_point.position) + $Timer.start() + if not ray.is_colliding(): + visto = true + print('visto') + else: visto=false + +func _on_visible_uscito() -> void: + visto = false + $Timer.stop() + print('non visto') diff --git a/Scene/player.tres.gd.uid b/Scene/player.tres.gd.uid new file mode 100644 index 0000000..130e735 --- /dev/null +++ b/Scene/player.tres.gd.uid @@ -0,0 +1 @@ +uid://cfekp6e2bhs4s diff --git a/Scene/player.tscn b/Scene/player.tscn new file mode 100644 index 0000000..c1a72cb --- /dev/null +++ b/Scene/player.tscn @@ -0,0 +1,576 @@ +[gd_scene load_steps=20 format=3 uid="uid://mcavsjo6dgd0"] + +[ext_resource type="PackedScene" uid="uid://djswo64leq8be" path="res://Immagini/Instant Camera.glb" id="1_4flbx"] +[ext_resource type="PackedScene" uid="uid://roh2pkd0qx72" path="res://Immagini/open book.glb" id="1_58ae2"] +[ext_resource type="Script" uid="uid://cfekp6e2bhs4s" path="res://Scene/player.tres.gd" id="1_ivevv"] +[ext_resource type="Texture2D" uid="uid://dvyv0o1c7ynqq" path="res://Immagini/vector-target-aim-simple-zoom-focus-icon-camera-frame-photo-viewfinder-screen-line-symbol_536875-203(1).png" id="2_onrkg"] +[ext_resource type="Shader" uid="uid://xp6bfrjh0pdg" path="res://ctr.gdshader" id="3_xa75v"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_hqtel"] + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_sweqy"] +points = PackedVector3Array(-0.125207, -0.532801, -0.480507, 0.0227831, 0.47607, 0.498884, 0.169713, 0.559144, 0.464172, 0.231051, -0.803591, 0.320455, 0.40741, 0.651043, -0.243523, -0.482789, 0.594843, 0.0822132, -0.362868, -0.682312, 0.289697, 0.469044, -0.654529, -0.0662713, -0.127444, 0.842701, -0.338103, -0.393435, -0.683942, -0.244717, 0.438255, 0.623309, 0.200849, 0.0841477, 0.977454, 0.114795, -0.0682023, -0.976458, -0.12927, 0.20055, -0.563129, -0.451454, -0.185527, 0.595453, -0.453475, -0.273363, 0.592268, 0.407754, -0.00693649, -0.476823, 0.49966, 0.375821, -0.588614, 0.316955, 0.111579, 0.563059, -0.481177, -0.41725, 0.527866, -0.270497, -0.484546, -0.596972, -0.0665097, -0.279747, 0.908561, 0.0533361, -0.250197, -0.880712, 0.205319, 0.263647, -0.902771, -0.127394, 0.293368, 0.871526, -0.157196, 0.373412, -0.526319, -0.328246, 0.499663, 0.476641, -0.00688856, 0.0531056, 0.875001, 0.324703, -0.154543, -0.590854, 0.465879, -0.0972799, -0.782358, -0.398188, -0.387649, -0.498171, 0.31565, -0.30068, -0.587995, -0.388901) + +[sub_resource type="Animation" id="Animation_i3pqv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera/Camera3D/Inst_Camera:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.186449, -0.09266, -0.183164)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Camera/Camera3D/Inst_Camera:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.5, 0.5, 0.5)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/path = NodePath("Control/target:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Camera/Camera3D/Inst_Camera:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Control/Panel:size") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1153, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Control/Panel2:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Control/Panel2:modulate") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = false +tracks/7/path = NodePath("Shader/CTR:visible") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Camera/Camera3D:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Camera/Camera3D:fov") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [75.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Camera/open book:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Camera/open book:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, -0.203552, -0.042686)] +} + +[sub_resource type="Animation" id="Animation_onrkg"] +resource_name = "camera_anim" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera/Camera3D/Inst_Camera:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.266667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0.186449, -0.09266, -0.183164), Vector3(0.070624, -0.0681669, -0.20404)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Camera/Camera3D/Inst_Camera:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.266667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0.5, 0.5, 0.5), Vector3(1.12301, 1.12301, 1.12301)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Control/target:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.266667, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [false, false, true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Camera/Camera3D/Inst_Camera:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.3, 0.333333), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, true, false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Control/Panel:size") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.133333, 0.333333, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1153, 1), Vector2(1153, 700), Vector2(1153, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Shader/CTR:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.3, 0.333333), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [false, false, false] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Camera/Camera3D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0.3, 0.333333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Camera/Camera3D:fov") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.3, 0.333333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [75.0, 42.9] +} + +[sub_resource type="Animation" id="Animation_ivevv"] +resource_name = "look_book" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera/open book:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.266667), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Camera/Camera3D/Inst_Camera:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.133333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0.186449, -0.09266, -0.183164), Vector3(0.200339, -0.238117, -0.184654)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Camera/Camera3D/Inst_Camera:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.166667), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Camera/open book:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, -0.203552, -0.042686), Vector3(0, -0.11669, -0.042686)] +} + +[sub_resource type="Animation" id="Animation_sweqy"] +resource_name = "ritorno_scatto" +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Control/target:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_hqtel"] +resource_name = "scatto" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Control/Panel2:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0333333, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [false, true, false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = false +tracks/1/path = NodePath("Control/target:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.0333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Control/Panel2:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Shader/CTR:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hqtel"] +_data = { +&"RESET": SubResource("Animation_i3pqv"), +&"camera_anim": SubResource("Animation_onrkg"), +&"look_book": SubResource("Animation_ivevv"), +&"ritorno_scatto": SubResource("Animation_sweqy"), +&"scatto": SubResource("Animation_hqtel") +} + +[sub_resource type="Animation" id="Animation_r6jsd"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera/Camera3D/Inst_Camera:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.186449, -0.09266, -0.183164)] +} + +[sub_resource type="Animation" id="Animation_58ae2"] +resource_name = "mov_cam" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera/Camera3D/Inst_Camera:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.266667, 0.533333, 0.766667, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector3(0.186449, -0.09266, -0.183164), Vector3(0.186449, -0.128884, -0.183164), Vector3(0.186449, -0.0967208, -0.183164), Vector3(0.186449, -0.069582, -0.183164), Vector3(0.186, -0.093, -0.183)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_p6qlh"] +_data = { +&"RESET": SubResource("Animation_r6jsd"), +&"mov_cam": SubResource("Animation_58ae2") +} + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_onrkg"] +bg_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i3pqv"] +bg_color = Color(0.851769, 0.851769, 0.851769, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_58ae2"] +shader = ExtResource("3_xa75v") +shader_parameter/overlay = false +shader_parameter/scanlines_opacity = 0.0 +shader_parameter/scanlines_width = 0.0 +shader_parameter/grille_opacity = 0.0 +shader_parameter/resolution = Vector2(640, 480) +shader_parameter/pixelate = false +shader_parameter/roll = false +shader_parameter/roll_speed = 8.0 +shader_parameter/roll_size = 0.0 +shader_parameter/roll_variation = 0.1 +shader_parameter/distort_intensity = 0.0 +shader_parameter/noise_opacity = 0.0 +shader_parameter/noise_speed = 5.0 +shader_parameter/static_noise_intensity = 0.0 +shader_parameter/aberration = 4.75e-08 +shader_parameter/brightness = 1.0 +shader_parameter/discolor = false +shader_parameter/warp_amount = 0.213 +shader_parameter/clip_warp = false +shader_parameter/vignette_intensity = 0.4 +shader_parameter/vignette_opacity = 0.5 + +[node name="Player" type="CharacterBody3D"] +script = ExtResource("1_ivevv") +CAMERA_SPEED = 0.005 + +[node name="Camera" type="Node3D" parent="."] +transform = Transform3D(4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 1.62624, 0) + +[node name="open book" parent="Camera" instance=ExtResource("1_58ae2")] +transform = Transform3D(0.371027, 0, 0, 0, 0.341024, -0.146163, 0, 0.146163, 0.341024, 0, -0.203552, -0.042686) +visible = false + +[node name="img1" type="Sprite3D" parent="Camera/open book"] +transform = Transform3D(0.0119495, 0.000129282, 0.336397, -0.00426941, 5.12341e-05, 0.941694, 0.000101255, -0.0130968, 0.00700449, -0.227564, 0.0793058, -0.288889) + +[node name="img2" type="Sprite3D" parent="Camera/open book"] +transform = Transform3D(0.0119992, 0.000128513, 0.325233, -0.00412771, 4.66553e-05, 0.945611, 0.000103038, -0.0130968, 0.00655988, -0.0875454, 0.0278816, -0.153726) + +[node name="img3" type="Sprite3D" parent="Camera/open book"] +transform = Transform3D(0.012047, 0.000111151, 0.314125, -0.00398627, -6.11278e-06, 0.949379, 0.0001041, -0.0130971, 0.00222279, -0.193001, 0.0664354, -0.0148353) + +[node name="img4" type="Sprite3D" parent="Camera/open book"] +transform = Transform3D(0.0125085, 0.000129282, -0.168094, 0.00213269, 5.12341e-05, 0.985769, 0.000131818, -0.0130968, 0.00219696, 0.189233, 0.0296399, -0.281508) + +[node name="img5" type="Sprite3D" parent="Camera/open book"] +transform = Transform3D(0.0124497, 0.000128513, -0.193324, 0.00245291, 4.66551e-05, 0.981133, 0.000130901, -0.0130968, 0.00159809, 0.107934, 0.0162589, -0.148389) + +[node name="img6" type="Sprite3D" parent="Camera/open book"] +transform = Transform3D(0.0124172, 0.000111151, -0.20598, 0.00261399, -6.11278e-06, 0.978554, 0.000104161, -0.0130971, -0.00220482, 0.206262, 0.0372861, -0.00797266) + +[node name="Camera3D" type="Camera3D" parent="Camera"] +near = 0.01 +far = 60.95 + +[node name="Inst_Camera" parent="Camera/Camera3D" instance=ExtResource("1_4flbx")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.186449, -0.09266, -0.183164) + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0) +mesh = SubResource("CapsuleMesh_hqtel") +skeleton = NodePath("") + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="."] +transform = Transform3D(1, -0.000352252, 0.000484425, 0.000352169, 1, 0.000189906, -0.000484485, -0.000189752, 1, 0, 1.1, 0) +shape = SubResource("ConvexPolygonShape3D_sweqy") + +[node name="AnimPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_hqtel") +} + +[node name="AnimPlayer2" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_hqtel") +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_p6qlh") +} + +[node name="AnimPlayer3" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_hqtel") +} + +[node name="Control" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="target" type="TextureRect" parent="Control"] +visible = false +light_mask = 2 +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +mouse_filter = 2 +texture = ExtResource("2_onrkg") + +[node name="Panel" type="Panel" parent="Control"] +modulate = Color(0, 0, 0, 1) +self_modulate = Color(0, 0, 0, 1) +layout_mode = 0 +offset_top = -1.0 +offset_right = 1153.0 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_onrkg") + +[node name="Panel2" type="Panel" parent="Control"] +visible = false +layout_mode = 0 +offset_right = 1152.0 +offset_bottom = 648.0 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_i3pqv") + +[node name="img1" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_right = 331.0 +offset_bottom = 248.0 + +[node name="Shader" type="CanvasLayer" parent="."] + +[node name="CTR" type="ColorRect" parent="Shader"] +visible = false +material = SubResource("ShaderMaterial_58ae2") +offset_right = 1152.0 +offset_bottom = 648.0 +mouse_filter = 2 +mouse_force_pass_scroll_events = false + +[node name="Timer" type="Timer" parent="."] + +[node name="RayCast3D" type="RayCast3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.34056, 0) + +[connection signal="animation_finished" from="AnimPlayer" to="." method="_on_anim_player_animation_finished"] +[connection signal="animation_finished" from="AnimPlayer3" to="." method="_on_anim_player_animation_finished"] +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/Script/Player.gd b/Script/Player.gd new file mode 100644 index 0000000..7b5d9ee --- /dev/null +++ b/Script/Player.gd @@ -0,0 +1,62 @@ +extends CharacterBody3D + + +const SPEED = 5.0 +const JUMP_VELOCITY = 4.5 + +@export var CAMERA_SPEED = 0.01 +@onready var camera := $Camera +@onready var camera3d := $Camera/Camera3D +var is_going= false +var num = 0 +var img_num + +# se vede un qualsiasi input +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventMouseButton: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + elif event.is_action_pressed("ui_cancel"): + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED: + if event is InputEventMouseMotion: + camera.rotate_y(-event.relative.x * CAMERA_SPEED) + camera3d.rotate_x(-event.relative.y * CAMERA_SPEED) + camera3d.rotation.x = clamp(camera3d.rotation.x, deg_to_rad(-50), deg_to_rad(60)) + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("fotocamera"): + is_going = true + if event.is_action_released("fotocamera"): + is_going= false + if event.is_action_pressed('screenshot') and is_going: + take_screenshot() + num+=1 + print(num) + +func take_screenshot() -> void: + img_num = str(num) + get_viewport().get_texture().get_image().save_png('screenshot/image'+img_num+'.png') + num+=1 + print(num) + +func _physics_process(delta: float) -> void: + # Add the gravity. + if not is_on_floor(): + velocity += get_gravity() * delta + + # Handle jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var input_dir := Input.get_vector("left", "right", "up", "down") + var direction = (camera.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + + move_and_slide() diff --git a/Script/Player.gd.uid b/Script/Player.gd.uid new file mode 100644 index 0000000..3b00eca --- /dev/null +++ b/Script/Player.gd.uid @@ -0,0 +1 @@ +uid://ck0nadc2hhggu diff --git a/Script/base.gd b/Script/base.gd new file mode 100644 index 0000000..f7bedc5 --- /dev/null +++ b/Script/base.gd @@ -0,0 +1,8 @@ +extends Node +var teleport_target_location = Vector2(100,100) + + +# PER LA MORTE +func _on_area_3d_body_entered(body: Node3D) -> void: + print("death") + $Player.global_position = Vector3(0.0, 10.0,0.0) diff --git a/Script/base.gd.uid b/Script/base.gd.uid new file mode 100644 index 0000000..3b67557 --- /dev/null +++ b/Script/base.gd.uid @@ -0,0 +1 @@ +uid://b2chtre60m62g diff --git a/ball.gd b/ball.gd new file mode 100644 index 0000000..be45f17 --- /dev/null +++ b/ball.gd @@ -0,0 +1,20 @@ +extends StaticBody3D +signal entrato +signal uscito + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + +# se e "visibile nello schermo" emit ma emit anche se ce un muro davanti +func _on_visible_on_screen_notifier_3d_screen_entered() -> void: + entrato.emit() + + +func _on_visible_on_screen_notifier_3d_screen_exited() -> void: + uscito.emit() diff --git a/ball.gd.uid b/ball.gd.uid new file mode 100644 index 0000000..1444cfe --- /dev/null +++ b/ball.gd.uid @@ -0,0 +1 @@ +uid://br3i356g3fo3f diff --git a/ctr.gdshader b/ctr.gdshader new file mode 100644 index 0000000..1301e0d --- /dev/null +++ b/ctr.gdshader @@ -0,0 +1,230 @@ +/* +Shader from Godot Shaders - the free shader library. +godotshaders.com/shader/VHS-and-CRT-monitor-effect + +This shader is under CC0 license. Feel free to use, improve and +change this shader according to your needs and consider sharing +the modified result to godotshaders.com. +*/ + +shader_type canvas_item; + +//*** IMPORTANT! ***/ +// - If you are using this shader to affect the node it is applied to set 'overlay' to false (unchecked in the instepctor). +// - If you are using this shader as an overlay, and want the shader to affect the nodes below in the Scene hierarchy, +// set 'overlay' to true (checked in the inspector). +// On Mac there is potentially a bug causing this to not work properly. If that is the case and you want to use the shader as an overlay +// change all "overlay ? SCREEN_TEXTURE : TEXTURE" to only "SCREEN_TEXTURE" on lines 129-140, and "vec2 uv = overlay ? warp(SCREEN_UV) : warp(UV);" +// to "vec2 uv = warp(SCREEN_UV);" on line 98. +uniform bool overlay = false; + +uniform float scanlines_opacity : hint_range(0.0, 1.0) = 0.4; +uniform float scanlines_width : hint_range(0.0, 0.5) = 0.25; +uniform float grille_opacity : hint_range(0.0, 1.0) = 0.3; +uniform vec2 resolution = vec2(640.0, 480.0); // Set the number of rows and columns the texture will be divided in. Scanlines and grille will make a square based on these values + +uniform bool pixelate = true; // Fill each square ("pixel") with a sampled color, creating a pixel look and a more accurate representation of how a CRT monitor would work. + +uniform bool roll = true; +uniform float roll_speed = 8.0; // Positive values are down, negative are up +uniform float roll_size : hint_range(0.0, 100.0) = 15.0; +uniform float roll_variation : hint_range(0.1, 5.0) = 1.8; // This valie is not an exact science. You have to play around with the value to find a look you like. How this works is explained in the code below. +uniform float distort_intensity : hint_range(0.0, 0.2) = 0.05; // The distortion created by the rolling effect. + +uniform float noise_opacity : hint_range(0.0, 1.0) = 0.4; +uniform float noise_speed = 5.0; // There is a movement in the noise pattern that can be hard to see first. This sets the speed of that movement. + +uniform float static_noise_intensity : hint_range(0.0, 1.0) = 0.06; + +uniform float aberration : hint_range(-1.0, 1.0) = 0.03; // Chromatic aberration, a distortion on each color channel. +uniform float brightness = 1.4; // When adding scanline gaps and grille the image can get very dark. Brightness tries to compensate for that. +uniform bool discolor = true; // Add a discolor effect simulating a VHS + +uniform float warp_amount :hint_range(0.0, 5.0) = 1.0; // Warp the texture edges simulating the curved glass of a CRT monitor or old TV. +uniform bool clip_warp = false; + +uniform float vignette_intensity = 0.4; // Size of the vignette, how far towards the middle it should go. +uniform float vignette_opacity : hint_range(0.0, 1.0) = 0.5; +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture,filter_linear_mipmap; + +// Used by the noise functin to generate a pseudo random value between 0.0 and 1.0 +vec2 random(vec2 uv){ + uv = vec2( dot(uv, vec2(127.1,311.7) ), + dot(uv, vec2(269.5,183.3) ) ); + return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123); +} + +// Generate a Perlin noise used by the distortion effects +float noise(vec2 uv) { + vec2 uv_index = floor(uv); + vec2 uv_fract = fract(uv); + + vec2 blur = smoothstep(0.0, 1.0, uv_fract); + + return mix( mix( dot( random(uv_index + vec2(0.0,0.0) ), uv_fract - vec2(0.0,0.0) ), + dot( random(uv_index + vec2(1.0,0.0) ), uv_fract - vec2(1.0,0.0) ), blur.x), + mix( dot( random(uv_index + vec2(0.0,1.0) ), uv_fract - vec2(0.0,1.0) ), + dot( random(uv_index + vec2(1.0,1.0) ), uv_fract - vec2(1.0,1.0) ), blur.x), blur.y) * 0.5 + 0.5; +} + +// Takes in the UV and warps the edges, creating the spherized effect +vec2 warp(vec2 uv){ + vec2 delta = uv - 0.5; + float delta2 = dot(delta.xy, delta.xy); + float delta4 = delta2 * delta2; + float delta_offset = delta4 * warp_amount; + + return uv + delta * delta_offset; +} + +// Adds a black border to hide stretched pixel created by the warp effect +float border (vec2 uv){ + float radius = min(warp_amount, 0.08); + radius = max(min(min(abs(radius * 2.0), abs(1.0)), abs(1.0)), 1e-5); + vec2 abs_uv = abs(uv * 2.0 - 1.0) - vec2(1.0, 1.0) + radius; + float dist = length(max(vec2(0.0), abs_uv)) / radius; + float square = smoothstep(0.96, 1.0, dist); + return clamp(1.0 - square, 0.0, 1.0); +} + +// Adds a vignette shadow to the edges of the image +float vignette(vec2 uv){ + uv *= 1.0 - uv.xy; + float vignette = uv.x * uv.y * 15.0; + return pow(vignette, vignette_intensity * vignette_opacity); +} + +void fragment() +{ + vec2 uv = overlay ? warp(SCREEN_UV) : warp(UV); // Warp the uv. uv will be used in most cases instead of UV to keep the warping + vec2 text_uv = uv; + vec2 roll_uv = vec2(0.0); + float time = roll ? TIME : 0.0; + + + // Pixelate the texture based on the given resolution. + if (pixelate) + { + text_uv = ceil(uv * resolution) / resolution; + } + + // Create the rolling effect. We need roll_line a bit later to make the noise effect. + // That is why this runs if roll is true OR noise_opacity is over 0. + float roll_line = 0.0; + if (roll || noise_opacity > 0.0) + { + // Create the areas/lines where the texture will be distorted. + roll_line = smoothstep(0.3, 0.9, sin(uv.y * roll_size - (time * roll_speed) ) ); + // Create more lines of a different size and apply to the first set of lines. This creates a bit of variation. + roll_line *= roll_line * smoothstep(0.3, 0.9, sin(uv.y * roll_size * roll_variation - (time * roll_speed * roll_variation) ) ); + // Distort the UV where where the lines are + roll_uv = vec2(( roll_line * distort_intensity * (1.-UV.x)), 0.0); + } + + vec4 text; + if (roll) + { + // If roll is true distort the texture with roll_uv. The texture is split up into RGB to + // make some chromatic aberration. We apply the aberration to the red and green channels accorging to the aberration parameter + // and intensify it a bit in the roll distortion. + text.r = texture(SCREEN_TEXTURE, text_uv + roll_uv * 0.8 + vec2(aberration, 0.0) * .1).r; + text.g = texture(SCREEN_TEXTURE, text_uv + roll_uv * 1.2 - vec2(aberration, 0.0) * .1 ).g; + text.b = texture(SCREEN_TEXTURE, text_uv + roll_uv).b; + text.a = 1.0; + } + else + { + // If roll is false only apply the aberration without any distorion. The aberration values are very small so the .1 is only + // to make the slider in the Inspector less sensitive. + text.r = texture(SCREEN_TEXTURE, text_uv + vec2(aberration, 0.0) * .1).r; + text.g = texture(SCREEN_TEXTURE, text_uv - vec2(aberration, 0.0) * .1).g; + text.b = texture(SCREEN_TEXTURE, text_uv).b; + text.a = 1.0; + } + + float r = text.r; + float g = text.g; + float b = text.b; + + uv = warp(UV); + + // CRT monitors don't have pixels but groups of red, green and blue dots or lines, called grille. We isolate the texture's color channels + // and divide it up in 3 offsetted lines to show the red, green and blue colors next to each other, with a small black gap between. + if (grille_opacity > 0.0){ + + float g_r = smoothstep(0.85, 0.95, abs(sin(uv.x * (resolution.x * 3.14159265)))); + r = mix(r, r * g_r, grille_opacity); + + float g_g = smoothstep(0.85, 0.95, abs(sin(1.05 + uv.x * (resolution.x * 3.14159265)))); + g = mix(g, g * g_g, grille_opacity); + + float b_b = smoothstep(0.85, 0.95, abs(sin(2.1 + uv.x * (resolution.x * 3.14159265)))); + b = mix(b, b * b_b, grille_opacity); + + } + + // Apply the grille to the texture's color channels and apply Brightness. Since the grille and the scanlines (below) make the image very dark you + // can compensate by increasing the brightness. + text.r = clamp(r * brightness, 0.0, 1.0); + text.g = clamp(g * brightness, 0.0, 1.0); + text.b = clamp(b * brightness, 0.0, 1.0); + + // Scanlines are the horizontal lines that make up the image on a CRT monitor. + // Here we are actual setting the black gap between each line, which I guess is not the right definition of the word, but you get the idea + float scanlines = 0.5; + if (scanlines_opacity > 0.0) + { + // Same technique as above, create lines with sine and applying it to the texture. Smoothstep to allow setting the line size. + scanlines = smoothstep(scanlines_width, scanlines_width + 0.5, abs(sin(uv.y * (resolution.y * 3.14159265)))); + text.rgb = mix(text.rgb, text.rgb * vec3(scanlines), scanlines_opacity); + } + + // Apply the banded noise. + if (noise_opacity > 0.0) + { + // Generate a noise pattern that is very stretched horizontally, and animate it with noise_speed + float noise = smoothstep(0.4, 0.5, noise(uv * vec2(2.0, 200.0) + vec2(10.0, (TIME * (noise_speed))) ) ); + + // We use roll_line (set above) to define how big the noise should be vertically (multiplying cuts off all black parts). + // We also add in some basic noise with random() to break up the noise pattern above. The noise is sized according to + // the resolution value set in the inspector. If you don't like this look you can + // change "ceil(uv * resolution) / resolution" to only "uv" to make it less pixelated. Or multiply resolution with som value + // greater than 1.0 to make them smaller. + roll_line *= noise * scanlines * clamp(random((ceil(uv * resolution) / resolution) + vec2(TIME * 0.8, 0.0)).x + 0.8, 0.0, 1.0); + // Add it to the texture based on noise_opacity + text.rgb = clamp(mix(text.rgb, text.rgb + roll_line, noise_opacity), vec3(0.0), vec3(1.0)); + } + + // Apply static noise by generating it over the whole screen in the same way as above + if (static_noise_intensity > 0.0) + { + text.rgb += clamp(random((ceil(uv * resolution) / resolution) + fract(TIME)).x, 0.0, 1.0) * static_noise_intensity; + } + + // Apply a black border to hide imperfections caused by the warping. + // Also apply the vignette + text.rgb *= border(uv); + text.rgb *= vignette(uv); + // Hides the black border and make that area transparent. Good if you want to add the the texture on top an image of a TV or monitor. + if (clip_warp) + { + text.a = border(uv); + } + + // Apply discoloration to get a VHS look (lower saturation and higher contrast) + // You can play with the values below or expose them in the Inspector. + float saturation = 0.5; + float contrast = 1.2; + if (discolor) + { + // Saturation + vec3 greyscale = vec3(text.r + text.g + text.b) / 3.; + text.rgb = mix(text.rgb, greyscale, saturation); + + // Contrast + float midpoint = pow(0.5, 2.2); + text.rgb = (text.rgb - vec3(midpoint)) * contrast + midpoint; + } + + COLOR = text; +} \ No newline at end of file diff --git a/ctr.gdshader.uid b/ctr.gdshader.uid new file mode 100644 index 0000000..d038ed3 --- /dev/null +++ b/ctr.gdshader.uid @@ -0,0 +1 @@ +uid://xp6bfrjh0pdg diff --git a/open_book.tscn b/open_book.tscn new file mode 100644 index 0000000..f52bdc6 --- /dev/null +++ b/open_book.tscn @@ -0,0 +1,5 @@ +[gd_scene load_steps=2 format=3 uid="uid://b3divkll7y164"] + +[ext_resource type="PackedScene" uid="uid://roh2pkd0qx72" path="res://Immagini/open book.glb" id="1_uumnn"] + +[node name="open book" instance=ExtResource("1_uumnn")] diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..d11bc04 --- /dev/null +++ b/project.godot @@ -0,0 +1,63 @@ +; 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=5 + +[application] + +config/name="GIOCO DI PROVA" +run/main_scene="uid://g3ocaiur6ojd" +config/features=PackedStringArray("4.4", "Forward Plus") +config/icon="res://Immagini/icon.svg" + +[global_group] + +"punti focus"="per essere visto dal raycast 3d" + +[input] + +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) +] +} +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) +] +} +up={ +"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) +] +} +down={ +"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) +] +} +screenshot={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +fotocamera={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +RUN={ +"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":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +book={ +"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":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) +] +} diff --git a/screenshot/image0.png b/screenshot/image0.png new file mode 100644 index 0000000..870e291 Binary files /dev/null and b/screenshot/image0.png differ diff --git a/screenshot/image0.png.import b/screenshot/image0.png.import new file mode 100644 index 0000000..d909898 --- /dev/null +++ b/screenshot/image0.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7ghjehqs4j27" +path.s3tc="res://.godot/imported/image0.png-3b86b3128890b69a8e8a73b591093467.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://screenshot/image0.png" +dest_files=["res://.godot/imported/image0.png-3b86b3128890b69a8e8a73b591093467.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/screenshot/image1.png b/screenshot/image1.png new file mode 100644 index 0000000..3453b94 Binary files /dev/null and b/screenshot/image1.png differ diff --git a/screenshot/image1.png.import b/screenshot/image1.png.import new file mode 100644 index 0000000..94a0bde --- /dev/null +++ b/screenshot/image1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mg17iqrf8xgc" +path.s3tc="res://.godot/imported/image1.png-b474bedb2cc5bcee942e9c3b2c84cfed.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://screenshot/image1.png" +dest_files=["res://.godot/imported/image1.png-b474bedb2cc5bcee942e9c3b2c84cfed.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/screenshot/image10.png b/screenshot/image10.png new file mode 100644 index 0000000..b1378de Binary files /dev/null and b/screenshot/image10.png differ diff --git a/screenshot/image10.png.import b/screenshot/image10.png.import new file mode 100644 index 0000000..937e461 --- /dev/null +++ b/screenshot/image10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dakqkmhbv77y7" +path="res://.godot/imported/image10.png-67539a470109523097922938ab99169a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image10.png" +dest_files=["res://.godot/imported/image10.png-67539a470109523097922938ab99169a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image11.png b/screenshot/image11.png new file mode 100644 index 0000000..80d7da2 Binary files /dev/null and b/screenshot/image11.png differ diff --git a/screenshot/image11.png.import b/screenshot/image11.png.import new file mode 100644 index 0000000..b77771a --- /dev/null +++ b/screenshot/image11.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bg44bxeqcdmlx" +path="res://.godot/imported/image11.png-02f55c1a71184b5cc3587e6718bc3738.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image11.png" +dest_files=["res://.godot/imported/image11.png-02f55c1a71184b5cc3587e6718bc3738.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image12.png b/screenshot/image12.png new file mode 100644 index 0000000..2a35a2a Binary files /dev/null and b/screenshot/image12.png differ diff --git a/screenshot/image12.png.import b/screenshot/image12.png.import new file mode 100644 index 0000000..28bc206 --- /dev/null +++ b/screenshot/image12.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmnpiteua7iyw" +path="res://.godot/imported/image12.png-009a39e227a443a69bed8bdb4fb7a593.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image12.png" +dest_files=["res://.godot/imported/image12.png-009a39e227a443a69bed8bdb4fb7a593.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image13.png b/screenshot/image13.png new file mode 100644 index 0000000..487da3d Binary files /dev/null and b/screenshot/image13.png differ diff --git a/screenshot/image13.png.import b/screenshot/image13.png.import new file mode 100644 index 0000000..856b4ba --- /dev/null +++ b/screenshot/image13.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ci6slasspf4v6" +path="res://.godot/imported/image13.png-47e851a49b394d1d2b33d9fd0edd2860.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image13.png" +dest_files=["res://.godot/imported/image13.png-47e851a49b394d1d2b33d9fd0edd2860.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image14.png b/screenshot/image14.png new file mode 100644 index 0000000..78c0444 Binary files /dev/null and b/screenshot/image14.png differ diff --git a/screenshot/image14.png.import b/screenshot/image14.png.import new file mode 100644 index 0000000..39190d1 --- /dev/null +++ b/screenshot/image14.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t5pe8cmk8v6x" +path="res://.godot/imported/image14.png-d7b40a9e3d3ae15146a4ffe470dd9bad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image14.png" +dest_files=["res://.godot/imported/image14.png-d7b40a9e3d3ae15146a4ffe470dd9bad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image2.png b/screenshot/image2.png new file mode 100644 index 0000000..960f3c3 Binary files /dev/null and b/screenshot/image2.png differ diff --git a/screenshot/image2.png.import b/screenshot/image2.png.import new file mode 100644 index 0000000..6c1d4e9 --- /dev/null +++ b/screenshot/image2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djkly4n76io46" +path="res://.godot/imported/image2.png-148dd12bc885c814912f9e05d90cc5bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image2.png" +dest_files=["res://.godot/imported/image2.png-148dd12bc885c814912f9e05d90cc5bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image3.png b/screenshot/image3.png new file mode 100644 index 0000000..5eb4039 Binary files /dev/null and b/screenshot/image3.png differ diff --git a/screenshot/image3.png.import b/screenshot/image3.png.import new file mode 100644 index 0000000..b09835c --- /dev/null +++ b/screenshot/image3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ea7ta7c6p35g" +path="res://.godot/imported/image3.png-6834afe3134654639574c5384d11df75.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image3.png" +dest_files=["res://.godot/imported/image3.png-6834afe3134654639574c5384d11df75.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image4.png b/screenshot/image4.png new file mode 100644 index 0000000..83456db Binary files /dev/null and b/screenshot/image4.png differ diff --git a/screenshot/image4.png.import b/screenshot/image4.png.import new file mode 100644 index 0000000..c0e4bc5 --- /dev/null +++ b/screenshot/image4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uk51aoaral8h" +path="res://.godot/imported/image4.png-d20f724e98a6fbf498199a97ecb1c3df.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image4.png" +dest_files=["res://.godot/imported/image4.png-d20f724e98a6fbf498199a97ecb1c3df.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image5.png b/screenshot/image5.png new file mode 100644 index 0000000..8404c30 Binary files /dev/null and b/screenshot/image5.png differ diff --git a/screenshot/image5.png.import b/screenshot/image5.png.import new file mode 100644 index 0000000..2f67245 --- /dev/null +++ b/screenshot/image5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gruq2tymys6h" +path="res://.godot/imported/image5.png-0aa59491c4101b108e458d9ca07a8140.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image5.png" +dest_files=["res://.godot/imported/image5.png-0aa59491c4101b108e458d9ca07a8140.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image6.png b/screenshot/image6.png new file mode 100644 index 0000000..e8cecbd Binary files /dev/null and b/screenshot/image6.png differ diff --git a/screenshot/image6.png.import b/screenshot/image6.png.import new file mode 100644 index 0000000..12d9c63 --- /dev/null +++ b/screenshot/image6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ulfojuy1oou5" +path="res://.godot/imported/image6.png-0935add0654816d1fc98cf7362ba74f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image6.png" +dest_files=["res://.godot/imported/image6.png-0935add0654816d1fc98cf7362ba74f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image7.png b/screenshot/image7.png new file mode 100644 index 0000000..021481c Binary files /dev/null and b/screenshot/image7.png differ diff --git a/screenshot/image7.png.import b/screenshot/image7.png.import new file mode 100644 index 0000000..51aa68c --- /dev/null +++ b/screenshot/image7.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh048qqwdfh7y" +path="res://.godot/imported/image7.png-6583b522a3184dec1c5d62f2c163681f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image7.png" +dest_files=["res://.godot/imported/image7.png-6583b522a3184dec1c5d62f2c163681f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image8.png b/screenshot/image8.png new file mode 100644 index 0000000..a089533 Binary files /dev/null and b/screenshot/image8.png differ diff --git a/screenshot/image8.png.import b/screenshot/image8.png.import new file mode 100644 index 0000000..fbf331e --- /dev/null +++ b/screenshot/image8.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmrqqsqsor1bs" +path="res://.godot/imported/image8.png-51ca9aeaa88925891c6d3d2994ce927c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image8.png" +dest_files=["res://.godot/imported/image8.png-51ca9aeaa88925891c6d3d2994ce927c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/screenshot/image9.png b/screenshot/image9.png new file mode 100644 index 0000000..f17d5ac Binary files /dev/null and b/screenshot/image9.png differ diff --git a/screenshot/image9.png.import b/screenshot/image9.png.import new file mode 100644 index 0000000..ed69bfc --- /dev/null +++ b/screenshot/image9.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6k4sv5vvks4n" +path="res://.godot/imported/image9.png-3ff65f7aa84552aff7a480fa8d46d267.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshot/image9.png" +dest_files=["res://.godot/imported/image9.png-3ff65f7aa84552aff7a480fa8d46d267.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/visto.tscn b/visto.tscn new file mode 100644 index 0000000..566f050 --- /dev/null +++ b/visto.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=3 uid="uid://bk2nxxt5jfmhw"] + +[ext_resource type="Script" uid="uid://br3i356g3fo3f" path="res://ball.gd" id="1_6drh8"] + +[sub_resource type="SphereShape3D" id="SphereShape3D_u2vub"] + +[sub_resource type="SphereMesh" id="SphereMesh_lqgjk"] + +[node name="focus" type="StaticBody3D" groups=["punti focus"]] +script = ExtResource("1_6drh8") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("SphereShape3D_u2vub") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("SphereMesh_lqgjk") + +[node name="VisibleOnScreenNotifier3D" type="VisibleOnScreenNotifier3D" parent="."] + +[connection signal="screen_entered" from="VisibleOnScreenNotifier3D" to="." method="_on_visible_on_screen_notifier_3d_screen_entered"] +[connection signal="screen_exited" from="VisibleOnScreenNotifier3D" to="." method="_on_visible_on_screen_notifier_3d_screen_exited"]