added the game:)
This commit is contained in:
parent
d4b7c77e09
commit
cdfe1089af
58 changed files with 2095 additions and 0 deletions
222
Scene/player.tres.gd
Normal file
222
Scene/player.tres.gd
Normal file
|
|
@ -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')
|
||||
Loading…
Add table
Add a link
Reference in a new issue