generated from krampus/template-godot4
	Tweaked magnus force to not affect good shots as much
This commit is contained in:
		
							parent
							
								
									9b9979e8ac
								
							
						
					
					
						commit
						424ee2f2ae
					
				@ -14,6 +14,7 @@ size = Vector3(0.147, 0.092, 0.31)
 | 
				
			|||||||
[node name="Brick" instance=ExtResource("1_y1dte")]
 | 
					[node name="Brick" instance=ExtResource("1_y1dte")]
 | 
				
			||||||
mass = 0.08
 | 
					mass = 0.08
 | 
				
			||||||
physics_material_override = SubResource("PhysicsMaterial_f03f4")
 | 
					physics_material_override = SubResource("PhysicsMaterial_f03f4")
 | 
				
			||||||
 | 
					radius = 0.15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="BrickMesh" parent="." index="0" instance=ExtResource("2_ubuxr")]
 | 
					[node name="BrickMesh" parent="." index="0" instance=ExtResource("2_ubuxr")]
 | 
				
			||||||
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0)
 | 
					transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0)
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,9 @@ const MAGNUS_EPSILON := 1e-3
 | 
				
			|||||||
## Scaling factor for additional force-based damage
 | 
					## Scaling factor for additional force-based damage
 | 
				
			||||||
@export var damage_force_scale := 0.01
 | 
					@export var damage_force_scale := 0.01
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Approximate average radius, for physics purposes
 | 
				
			||||||
 | 
					@export var radius := 0.05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var current_gravity: Vector3
 | 
					var current_gravity: Vector3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _last_contact_normal: Vector3 = Vector3.UP
 | 
					var _last_contact_normal: Vector3 = Vector3.UP
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,9 @@ const WATER_DAMAGE := 10.0
 | 
				
			|||||||
## Angle of influence that shot curve has, in radians
 | 
					## Angle of influence that shot curve has, in radians
 | 
				
			||||||
const CURVE_INFLUENCE := PI / 16
 | 
					const CURVE_INFLUENCE := PI / 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Just enough to make things interesting!
 | 
				
			||||||
 | 
					const SHOT_OFFSET_Z_FACTOR := 2.0 / 45.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Impulse offset multiplier due to curve, in meters
 | 
					## Impulse offset multiplier due to curve, in meters
 | 
				
			||||||
const CURVE_FACTOR := 0.002
 | 
					const CURVE_FACTOR := 0.002
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -262,10 +265,16 @@ func take_shot() -> void:
 | 
				
			|||||||
	print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s")
 | 
						print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# Curve the curve
 | 
						# Curve the curve
 | 
				
			||||||
	var curve := direction.global_basis.x.normalized() * shot_curve * absf(shot_curve)
 | 
						var curve := shot_curve * absf(shot_curve) * CURVE_FACTOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# Position where the ball is hit (imparts spin)
 | 
						# Position where the ball is hit (imparts spin)
 | 
				
			||||||
	var offset := -curve * CURVE_FACTOR
 | 
						var offset := direction.global_basis.x.normalized() * -curve
 | 
				
			||||||
 | 
						offset += (
 | 
				
			||||||
 | 
							direction.global_basis.z.normalized()
 | 
				
			||||||
 | 
							* game_ball.radius
 | 
				
			||||||
 | 
							* game_ball.radius
 | 
				
			||||||
 | 
							* SHOT_OFFSET_Z_FACTOR
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
	print_debug("Shot offset: ", offset, "; ", offset.length(), " m")
 | 
						print_debug("Shot offset: ", offset, "; ", offset.length(), " m")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if game_ball:
 | 
						if game_ball:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user