Ejemplo n.º 1
0
    public float cliffHillRatio = 0;                                // -1 = cliff | 0 = flat | 1 = hill

    public void                 Calculate(HeightAttributes attrs, Vector3 origin, Vector3 castHillCliffDirection, Vector3 cameraDirection)
    {
        Vector3 cliffCastPosition;
        Vector3 hillCastPosition;
        float   minDistance;
        float   maxDistance;

        // we offset the y value of the raycast position by the length of the raycast
        hillCastPosition = origin + cameraDirection * attrs.cliffHillCastAwayDistance.y + (castHillCliffDirection * -1) * attrs.maxCliffHillCastDistance.y;
        minDistance      = Vector3.Distance(origin, hillCastPosition + castHillCliffDirection * attrs.maxCliffHillCastDistance.y);
        maxDistance      = Vector3.Distance(origin, hillCastPosition);
        if (Physics.Raycast(hillCastPosition, castHillCliffDirection, out this.raycastHit, attrs.maxCliffHillCastDistance.y, attrs.cliffHillMaskDetection))
        {
            // there's a ground
            this.cliffHillRatio = (Vector3.Distance(origin, this.raycastHit.point) - minDistance) / maxDistance;
            this.BumpHeight     = Mathf.SmoothDamp(this.BumpHeight, attrs.cliffHillHeight.y, ref this.bumpHeightSmooth, this.smoothDampTime);
            this.BumpDistance   = Mathf.SmoothDamp(this.BumpDistance, attrs.cliffHillDistance.y, ref this.bumpDistanceSmooth, this.smoothDampTime);
        }
        else
        {
            // there's a cliff
            cliffCastPosition   = origin + cameraDirection * attrs.cliffHillCastAwayDistance.x;
            minDistance         = Vector3.Distance(origin, cliffCastPosition);
            maxDistance         = Vector3.Distance(origin, cliffCastPosition + castHillCliffDirection * attrs.maxCliffHillCastDistance.x);
            this.cliffHillRatio = 1;
            if (Physics.Raycast(cliffCastPosition, castHillCliffDirection, out this.raycastHit, attrs.maxCliffHillCastDistance.x, attrs.cliffHillMaskDetection))
            {
                this.cliffHillRatio = 1 * (Vector3.Distance(origin, this.raycastHit.point) - minDistance) / maxDistance;
            }
            this.BumpHeight   = Mathf.SmoothDamp(this.BumpHeight, attrs.cliffHillHeight.x, ref this.bumpHeightSmooth, this.smoothDampTime);
            this.BumpDistance = Mathf.SmoothDamp(this.BumpDistance, attrs.cliffHillDistance.x, ref this.bumpDistanceSmooth, this.smoothDampTime);
        }
    }
Ejemplo n.º 2
0
 void                        Start()
 {
     this.state                   = CameraState.Automatic;
     this.oldFollow               = this.follow.position;
     this.oldRotation             = this.transform.rotation;
     this.transform.position      = this.follow.position + Vector3.one; // set position
     this.currentHeightAttributes = this.defaultHeightAttributes;
     this.attrs                   = this.defaultAttrs;
 }
Ejemplo n.º 3
0
 public void                 resetHeightAttributes()
 {
     this.currentHeightAttributes = this.defaultHeightAttributes;
 }
Ejemplo n.º 4
0
 public void                 setHeightAttributes(HeightAttributes newHeightAttrs)
 {
     this.currentHeightAttributes = newHeightAttrs;
 }