A dungeon delver roguelike using Pathfinder 2nd edition rules
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Added camera zoom

+35 -17
+17 -2
camera/camera.gd
··· 3 3 @export_group("Movement variables") 4 4 @export var move_speed: float = 2.0 5 5 @export var rotate_speed: float = 2.0 6 + @export var zoom_speed: float = 2.0 6 7 7 8 @export_group("Movement ADSR variables") 8 9 @export_subgroup("Move") ··· 25 26 var move_dir: Vector3 = Vector3.ZERO 26 27 var move_direction: Vector3 27 28 var rotate_direction: float = 0.0 29 + var zoom_percent: float = 0.5 28 30 29 31 @onready var fighter: CharacterBody3D = $"../FighterCharacter" 30 32 ··· 98 100 99 101 if Input.is_action_just_pressed("Select"): 100 102 var mouse_pos = get_viewport().get_mouse_position() 101 - var from = $"SpringArm3D/Camera3D".project_ray_origin(mouse_pos) 102 - var to = from + $"SpringArm3D/Camera3D".project_ray_normal(mouse_pos) * 1000.0 103 + var from = $"Path3D/PathFollow3D/SpringArm3D/Camera3D".project_ray_origin(mouse_pos) 104 + var to = from + $"Path3D/PathFollow3D/SpringArm3D/Camera3D".project_ray_normal(mouse_pos) * 1000.0 103 105 var space_state = get_world_3d().direct_space_state 104 106 var query = PhysicsRayQueryParameters3D.create(from, to) 105 107 query.exclude = [$"../FighterCharacter"] ··· 108 110 if result: 109 111 $"../FighterCharacter".target_position = result.position 110 112 $"../FighterCharacter".has_target = true 113 + 114 + $Path3D/PathFollow3D.progress = zoom_percent 115 + 116 + func _unhandled_input(event: InputEvent) -> void: 117 + if event is InputEventMouseButton: 118 + var emb: InputEventMouseButton = event 119 + 120 + if emb.is_pressed(): 121 + if emb.button_index == int(MOUSE_BUTTON_WHEEL_UP): 122 + zoom_percent = clamp(zoom_percent - (zoom_speed / 40.0), 0.0, 1.0) 123 + 124 + if emb.button_index == int(MOUSE_BUTTON_WHEEL_DOWN): 125 + zoom_percent = clamp(zoom_percent + (zoom_speed / 40.0), 0.0, 1.0) 111 126 112 127 func adsr(attack: float, decay: float, sustain: float, release: float, held: bool, time: float, pressed: float, released: float) -> float: 113 128 var p: float
+17 -4
camera/camera.tscn
··· 1 - [gd_scene load_steps=2 format=3 uid="uid://bby3edcc724cg"] 1 + [gd_scene load_steps=3 format=3 uid="uid://bby3edcc724cg"] 2 2 3 3 [ext_resource type="Script" uid="uid://dvrq0yxv1wk2x" path="res://camera/camera.gd" id="1_lw1ob"] 4 4 5 + [sub_resource type="Curve3D" id="Curve3D_lw1ob"] 6 + _data = { 7 + "points": PackedVector3Array(0, 0, 0, 0, -0.17, 1.015, 0, 0, 0, 0, -0.67, 0, 0, 0, 0, 0, 2.17585, 2.40763), 8 + "tilts": PackedFloat32Array(0, 0) 9 + } 10 + point_count = 2 11 + 5 12 [node name="Camera" type="Node3D"] 6 13 script = ExtResource("1_lw1ob") 7 14 move_speed = 0.5 ··· 9 16 attack_move_time = 0.5 10 17 release_move_time = 0.5 11 18 12 - [node name="SpringArm3D" type="SpringArm3D" parent="."] 13 - transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.08832) 19 + [node name="Path3D" type="Path3D" parent="."] 20 + curve = SubResource("Curve3D_lw1ob") 21 + 22 + [node name="PathFollow3D" type="PathFollow3D" parent="Path3D"] 23 + transform = Transform3D(-1, 1.44411e-08, -8.62217e-08, 0, 0.986261, 0.165187, 8.74228e-08, 0.165187, -0.986261, 0, 0, 0) 24 + 25 + [node name="SpringArm3D" type="SpringArm3D" parent="Path3D/PathFollow3D"] 26 + transform = Transform3D(-1, 0, 8.74228e-08, 1.44411e-08, 0.986262, 0.165187, -8.62218e-08, 0.165187, -0.986262, 9.5144e-08, 0.179776, -1.07337) 14 27 spring_length = 1.9 15 28 margin = 0.04 16 29 17 - [node name="Camera3D" type="Camera3D" parent="SpringArm3D"] 30 + [node name="Camera3D" type="Camera3D" parent="Path3D/PathFollow3D/SpringArm3D"]
+1 -1
dungeonRoom/dungeonRoom.tscn
··· 55 55 visible = false 56 56 57 57 [node name="Camera" parent="." instance=ExtResource("14_cr8g4")] 58 - transform = Transform3D(1, 0, 0, 0, 0.939693, 0.34202, 0, -0.34202, 0.939693, 0, 1.535, 0) 58 + transform = Transform3D(1, 0, 0, 0, 0.939693, 0.34202, 0, -0.34202, 0.939693, 0, 0.367939, -0.173382) 59 59 rotate_speed = 0.05 60 60 61 61 [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
-10
project.godot
··· 111 111 "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":1,"position":Vector2(114, 33),"global_position":Vector2(128, 106),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) 112 112 ] 113 113 } 114 - ZoomIn={ 115 - "deadzone": 0.2, 116 - "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":8,"position":Vector2(331, 27),"global_position":Vector2(345, 100),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) 117 - ] 118 - } 119 - ZoomOut={ 120 - "deadzone": 0.2, 121 - "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":16,"position":Vector2(451, 19),"global_position":Vector2(465, 92),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) 122 - ] 123 - }