More Bugfix...
-=-=-=-=-=-== -Fix bug in camera follow script -Fix negate operator not working in shader language -Fix uninitialized pointer in raycast query API
This commit is contained in:
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user