예제 #1
0
    void EvaluateObstacleInFront()
    {
        Vector3 position = transform.position;
        Vector3 forward  = transform.forward;

        BoxCastDrawer.DrawBoxCastBox(new Vector3(position.x, 0, position.z) + forward * 2, new Vector3(2, 1, 1), transform.rotation, forward, distanceRayCast, Color.blue);

        if (Physics.BoxCast(new Vector3(position.x, 0, position.z) + forward * 2, new Vector3(2, 1, 1), forward, out RaycastHit hitInfo, transform.rotation, distanceRayCast, layerMaskRayCast))
        {
            Vector3 targetDir = hitInfo.transform.position - position;
            Vector2 force;
            if (Vector3.Cross(targetDir, forward).z < 0)
            {
                force = new Vector2(-forward.z, forward.x).normalized * 5.0f;
            }
            else
            {
                force = new Vector2(forward.z, -forward.x).normalized * 5.0f;
            }

            movementVector += force;

            Debug.DrawLine(position + Vector3.up, position + Vector3.up + new Vector3(force.x, 0, force.y));
        }
    }
예제 #2
0
파일: Player2.cs 프로젝트: Duocor3/sandbox
    // quick little method to create and draw a boxcast
    private RaycastHit2D BoxCast(Vector2 origin, Vector2 size, float angle, Vector2 direction, float distance, int layerMask)
    {
        // creates the raycast
        RaycastHit2D boxCast = Physics2D.BoxCast(origin, size, angle, direction, distance, layerMask);

        // draws the raycast
        BoxCastDrawer.Draw(boxCast, origin, size, angle, direction, distance);

        return(boxCast);
    }