예제 #1
0
    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;
         *
         * }*/
    }
예제 #2
0
    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);
    }
예제 #3
0
    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);
    }