@@ -117,19 +117,17 @@ func physics_movement(delta: float, player_body: XRToolsPlayerBody, disabled: bo
117117
118118 # If wings impulse is active, calculate flapping impulse
119119 if wings_impulse :
120- # Get head position
121- var camera_position := _camera_node .global_transform .origin
122-
123120 # Check controllers position relative to head
124- var left_hand_over_head = camera_position .y < left_position .y + rearm_distance_offset
125- var right_hand_over_head = camera_position .y < right_position .y + rearm_distance_offset
121+ var cam_local_y := _camera_node .position .y
122+ var left_hand_over_head = cam_local_y < _left_controller .position .y + rearm_distance_offset
123+ var right_hand_over_head = cam_local_y < _right_controller .position .y + rearm_distance_offset
126124 if left_hand_over_head && right_hand_over_head :
127125 flap_armed = true
128126
129127 if flap_armed :
130128 # Get controller local positions
131- var local_left_position := _left_controller .transform . origin
132- var local_right_position := _right_controller .transform . origin
129+ var local_left_position := _left_controller .position
130+ var local_right_position := _right_controller .position
133131
134132 # Store last frame controller positions for the first step
135133 if not _has_controller_positions :
@@ -156,20 +154,20 @@ func physics_movement(delta: float, player_body: XRToolsPlayerBody, disabled: bo
156154 last_local_left_position = local_left_position
157155 last_local_right_position = local_right_position
158156
159- # If not falling, then not gliding
160- var vertical_velocity := player_body .velocity .dot (player_body .up_gravity_vector )
161- vertical_velocity += wings_impulse_velocity
162- if vertical_velocity >= glide_min_fall_speed && wings_impulse_velocity == 0.0 :
163- _set_gliding (false )
164- return
165-
166157 # Calculate global left to right controller vector
167158 var left_to_right := right_position - left_position
168159
169160 if turn_with_roll :
170161 var angle = - left_to_right .dot (player_body .up_player_vector )
171162 player_body .rotate_player (roll_turn_speed * delta * angle )
172163
164+ # If not falling, then not gliding
165+ var vertical_velocity := player_body .velocity .dot (player_body .up_gravity_vector )
166+ vertical_velocity += wings_impulse_velocity
167+ if vertical_velocity >= glide_min_fall_speed && wings_impulse_velocity == 0.0 :
168+ _set_gliding (false )
169+ return
170+
173171 # Set gliding based on hand separation
174172 var separation := left_to_right .length () / XRServer .world_scale
175173 _set_gliding (separation >= glide_detect_distance )
0 commit comments