bool adfustCameraUpPositionToOcclusionTps(ref TpsDat tps, float vangle) { //if( Mathf.Abs( vangle ) > 45.0f ) { var start = tps.center; //tps.center + tps.forwardofs;// var end = tps.center + tps.upofs; //start + tps.upofs;// var res = Physics.Linecast(start, end, UserLayer.eyeOcculusionForPlayer | UserLayer.bgDetailInvisible); return(res); } /*else * { * * var start = tps.center + tps.forwardofs; * * var end = start + tps.upofs; * * * var res = Physics.Linecast( start, end, UserLayer.eyeOcculusionForPlayer ); * * * return res; * * return false; * * }*/ }
bool adjustCameraDistanceToOcclusion(ref TpsDat tps, ref Vector3 cameraPosition) { var start = tps.center + tps.upofs; var end = cameraPosition; var xofs = tps.left * 0.2f; var hitR = new RaycastHit(); var hitL = new RaycastHit(); var res = Physics.Linecast(start - xofs, end - xofs, out hitR, UserLayer.eyeOcculusionForPlayer) && Physics.Linecast(start + xofs, end + xofs, out hitL, UserLayer.eyeOcculusionForPlayer); if (res) { var dist = Mathf.Min(hitR.distance, hitL.distance); cameraPosition = start - tps.forward * dist; //( end - start ).normalized * dist; } return(res); }
Vector3 adjustCameraPositionTps(out TpsDat tps, Quaternion rot) { var zratio = verticalAngle > 0.0f ? verticalAngle * (1.0f / 90.0f) * rearDollyRatioMax : 0.0f; tps.center = act.rb.position + new Vector3(0.0f, rollCenterHeight, 0.0f); tps.forward = rot * Vector3.forward; tps.up = rot * Vector3.up; tps.left = rot * Vector3.left; tps.forwardofs = tps.forward * (standardCameraLocalPostion.z + zratio); tps.upofs = tps.up * (standardCameraLocalPostion.y - rollCenterHeight); return(tps.center + tps.forwardofs + tps.upofs); }