моя версия безмятежности
Страница: 1
Сообщений 1 страница 19 из 19
Поделиться22026-03-01 16:40:41
Код:
extends CharacterBody3D
var speed = 6.0
var jump_velocity = 6
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
var mouse_sensitivity = 0.002
var camera_follow_speed = 10.0
var camera_height_offset = 1.5
var is_aiming = false
var yaw = 0.0
var pitch = 0.0
# --- ССЫЛКИ НА УЗЛЫ ---
@onready var camera_pivot = get_tree().get_first_node_in_group("camera_pivot")
@onready var hp_ui = get_tree().get_first_node_in_group("ui")
@onready var animation_player = $AnimationPlayer
func _ready():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func _input(event):
if event is InputEventMouseMotion:
yaw -= event.relative.x * mouse_sensitivity
pitch -= event.relative.y * mouse_sensitivity
pitch = clamp(pitch, deg_to_rad(-60), deg_to_rad(40))
camera_pivot.rotation.y = yaw
if event.is_action_pressed("ui_cancel"):
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func start_aiming():
is_aiming = true
if audio_bow and sound_draw:
audio_bow.stream = sound_draw
audio_bow.play()
func _physics_process(delta):
if grass_mat:
grass_mat.set_shader_parameter("player_position", self.global_position)
if not is_on_floor():
velocity.y -= gravity * delta
else:
if velocity.y < 0:
velocity.y = 0
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = jump_velocity
var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
var aim_basis = camera_pivot.global_transform.basis
var forward_dir = aim_basis.z
var right_dir = aim_basis.x
var direction = (forward_dir * input_dir.y + right_dir * input_dir.x).normalized()
if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
var target_position = global_position + direction
var target_transform = transform.looking_at(target_position, Vector3.UP)
var target_basis = Basis.from_euler(Vector3(0, target_transform.basis.get_euler().y, 0))
transform.basis = transform.basis.slerp(target_basis, 15 * delta)
else:
velocity.x = move_toward(velocity.x, 0, speed)
velocity.z = move_toward(velocity.z, 0, speed)
if is_aiming:
var cam_basis = camera_pivot.global_transform.basis
var look_dir = -cam_basis.z
if look_dir.length() > 0.1:
var target_pos = global_position + look_dir
var target_transform = transform.looking_at(target_pos, Vector3.UP)
var target_basis = Basis.from_euler(Vector3(0, target_transform.basis.get_euler().y, 0))
transform.basis = transform.basis.slerp(target_basis, 20 * delta)
move_and_slide()
if animation_player and animation_player.has_animation("walk"):
if velocity.length() > 0.1:
animation_player.play("walk")
else:
animation_player.play("idle")
func _process(delta):
if camera_pivot.has_node("CameraBoom"):
camera_pivot.get_node("CameraBoom").rotation.x = pitch
var target_pos = global_position + Vector3(0, camera_height_offset, 0)
camera_pivot.global_position = camera_pivot.global_position.lerp(target_pos, camera_follow_speed * delta)Поделиться62026-03-01 17:00:53
mimes написал(а):
Цитировать
эй, у меня этот мем есть
Поделиться72026-03-01 17:01:04
о великий гриб
Поделиться82026-03-01 17:02:51
и этот! 
Поделиться92026-03-01 17:03:05
я ворую твои грибы
Поделиться122026-03-01 17:05:05
добро пожаловать в годот
Поделиться152026-03-01 17:05:39
mimes написал(а):
добро пожаловать в годот
спасибо за билет 
Поделиться182026-03-03 02:11:33
lua написал(а):
гля
Поделиться192026-03-03 23:52:50
оу щет, мне это нужно
Страница: 1










