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")] | ||||
| mass = 0.08 | ||||
| physics_material_override = SubResource("PhysicsMaterial_f03f4") | ||||
| radius = 0.15 | ||||
| 
 | ||||
| [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) | ||||
|  | ||||
| @ -39,6 +39,9 @@ const MAGNUS_EPSILON := 1e-3 | ||||
| ## Scaling factor for additional force-based damage | ||||
| @export var damage_force_scale := 0.01 | ||||
| 
 | ||||
| ## Approximate average radius, for physics purposes | ||||
| @export var radius := 0.05 | ||||
| 
 | ||||
| var current_gravity: Vector3 | ||||
| 
 | ||||
| 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 | ||||
| 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 | ||||
| const CURVE_FACTOR := 0.002 | ||||
| 
 | ||||
| @ -262,10 +265,16 @@ func take_shot() -> void: | ||||
| 	print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s") | ||||
| 
 | ||||
| 	# 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) | ||||
| 	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") | ||||
| 
 | ||||
| 	if game_ball: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user