Example #1
0
    public void Update()
    {
        Vector3 previousPos = this.transform.position;

        this.transform.position += this.transform.forward * this.speed * Time.deltaTime;
        int     intersectionIndex;
        Vector3?fenceIntersection = this.fence.SegmentIntersection(previousPos, this.transform.position, out intersectionIndex);

        if (fenceIntersection != null)
        {
            Vector3 fenceDir    = this.fence.DirAt(intersectionIndex);
            Vector3 fenceNormal = this.fence.NormalAt(intersectionIndex);
            Vector3 newForward  = -Vector3.Dot(this.transform.forward, fenceNormal) * fenceNormal + Vector3.Dot(this.transform.forward, fenceDir) * fenceDir;
            this.transform.position = fenceIntersection.GetValueOrDefault() + fenceNormal * 0.05f;
            this.transform.rotation = Quaternion.LookRotation(newForward, Vector3.up);
        }
        Vector3?foxIntersection = SegmentMath.SegmentPathIntersection(previousPos, this.transform.position, this.fox.GetPath());

        if (foxIntersection != null)
        {
            Debug.LogWarning("You've hit by ! You've been struck by ! A smooth dog.");
            this.fox.isAlive = false;
        }
    }