Эх сурвалжийг харах

More Bugfix...
-=-=-=-=-=-==

-Fix bug in camera follow script
-Fix negate operator not working in shader language
-Fix uninitialized pointer in raycast query API

Juan Linietsky 11 жил өмнө
parent
commit
c69e6eda52

+ 1 - 24
3d/kinematic_char/follow_camera.gd

@@ -24,7 +24,7 @@ func _fixed_process(dt):
 	#regular delta follow
 	
 	#check ranges
-	
+
 	if (delta.length() < min_distance):
 		delta = delta.normalized() * min_distance
 	elif (delta.length() > max_distance):
@@ -36,29 +36,6 @@ func _fixed_process(dt):
 	if ( delta.y < min_height):
 		delta.y = min_height
 		
-	#check autoturn
-	
-	var ds = PhysicsServer.space_get_direct_state( get_world().get_space() )
-	
-	
-	var col_left = ds.intersect_ray(target,target+Matrix3(up,deg2rad(autoturn_ray_aperture)).xform(delta),collision_exception)
-	var col = ds.intersect_ray(target,target,collision_exception)
-	var col_right = ds.intersect_ray(target,target+Matrix3(up,deg2rad(-autoturn_ray_aperture)).xform(delta),collision_exception)
-	
-	if (!col.empty()):
-		#if main ray was occluded, get camera closer, this is the worst case scenario
-		delta = col.position - target	
-	elif (!col_left.empty() and col_right.empty()):
-		#if only left ray is occluded, turn the camera around to the right
-		delta = Matrix3(up,deg2rad(-dt*autoturn_speed)).xform(delta)
-	elif (col_left.empty() and !col_right.empty()):
-		#if only right ray is occluded, turn the camera around to the left
-		delta = Matrix3(up,deg2rad(dt*autoturn_speed)).xform(delta)
-	else:
-		#do nothing otherwise, left and right are occluded but center is not, so do not autoturn
-		pass
-	
-	#apply lookat
 	pos = target + delta
 	
 	look_at_from_pos(pos,target,up)

+ 4 - 1
3d/platformer/follow_camera.gd

@@ -42,7 +42,7 @@ func _fixed_process(dt):
 	
 	
 	var col_left = ds.intersect_ray(target,target+Matrix3(up,deg2rad(autoturn_ray_aperture)).xform(delta),collision_exception)
-	var col = ds.intersect_ray(target,target,collision_exception)
+	var col = ds.intersect_ray(target,target+delta,collision_exception)
 	var col_right = ds.intersect_ray(target,target+Matrix3(up,deg2rad(-autoturn_ray_aperture)).xform(delta),collision_exception)
 	
 	if (!col.empty()):
@@ -59,6 +59,9 @@ func _fixed_process(dt):
 		pass
 	
 	#apply lookat
+	if (delta==Vector3()):
+		delta = (pos - target).normalized() * 0.0001
+
 	pos = target + delta
 	
 	look_at_from_pos(pos,target,up)