Пример #1
0
    void OnDrawGizmos()
    {
        // draw grid
        Gizmos.color = Color.gray;

        Vector3 pos = Camera.current.transform.position;

        for (float y = pos.y - 800.0f; y < pos.y + 800.0f; y += height)
        {
            Gizmos.DrawLine(new Vector3(-1000000.0f, Mathf.Floor(y / height) * height, 0.0f), new Vector3(1000000.0f, Mathf.Floor(y / height) * height, 0.0f));
        }
        for (float x = pos.x - 1200.0f; x < pos.x + 1200.0f; x += width)
        {
            Gizmos.DrawLine(new Vector3(Mathf.Floor(x / width) * width, -1000000.0f, 0.0f), new Vector3(Mathf.Floor(x / width) * width, 1000000.0f, 0.0f));
        }

        // draw room
        Gizmos.color = Color.white;

        Rect[] Rooms = Camera.main.GetComponent <CameraFollow>().Rooms;

        foreach (Rect room in Rooms)
        {
            Rect4 room4 = new Rect4(room);

            Gizmos.DrawLine(new Vector3(room4.left, room4.down, 0), new Vector3(room4.right, room4.down, 0));
            Gizmos.DrawLine(new Vector3(room4.left, room4.up, 0), new Vector3(room4.right, room4.up, 0));
            Gizmos.DrawLine(new Vector3(room4.left, room4.down, 0), new Vector3(room4.left, room4.up, 0));
            Gizmos.DrawLine(new Vector3(room4.right, room4.down, 0), new Vector3(room4.right, room4.up, 0));
        }
    }
Пример #2
0
 public float GetRise(Vector3 point)
 {
     switch (type)
     {
     case 1:
         Rect4 collider = new Rect4(size);
         collider = new Rect4(transform.position.y + collider.up, transform.position.y + collider.down, transform.position.x + collider.left, transform.position.x + collider.right);
         return(point.x - (transform.position.x + size.x) - (point.y - transform.position.y + size.height / 2));
     }
     return(0);
 }
Пример #3
0
    public bool CheckIn(ColliderBox cb)
    {
        Rect4 player = new Rect4(cb.size).Local2World(cb.transform);
        Rect4 npc    = new Rect4(check).Local2World(transform);

        if (player.right <= npc.left || player.left >= npc.left || player.down >= npc.up || player.up <= npc.down)
        {
            return(false);
        }
        else
        {
            return(true);
        }
    }
Пример #4
0
 // Use this for initialization
 void Start()
 {
     switch (CameraMode)
     {
     case 0:
         target = GameObject.Find("milk").transform;
         if (target != null)
         {
             // find current room
             CurrentRoom = FindCurrentRoom();
         }
         else
         {
             Debug.Log("cannot find milk.");
         }
         break;
     }
 }
Пример #5
0
    public bool CheckIn(Vector3 position)
    {
        Rect4 collider = new Rect4(size);

        collider = new Rect4(transform.position.y + collider.up, transform.position.y + collider.down, transform.position.x + collider.left, transform.position.x + collider.right);
        switch (type)
        {
        // box
        case 0:
            if (position.x - collider.left > 0.01f)
            {
                if (position.x < collider.right)
                {
                    if (position.y < collider.up)
                    {
                        if (position.y > collider.down)
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);

        // rightdown
        case 1:
            if (position.x < collider.right)
            {
                if (position.y > collider.down)
                {
                    if (position.x > position.y - collider.down + collider.left)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        return(false);
    }
Пример #6
0
    public Rect4 FindCurrentRoom()
    {
        foreach (Rect room in Rooms)
        {
            Rect4 room4 = new Rect4(room);

            if (target.position.y < room4.up)
            {
                if (target.position.y > room4.down)
                {
                    if (target.position.x > room4.left)
                    {
                        if (target.position.x < room4.right)
                        {
                            return(room4);
                        }
                    }
                }
            }
        }
        return(null);
    }
Пример #7
0
    // Update is called once per frame
    void Update()
    {
        switch (CameraMode)
        {
        case 0:
            switch (b_through)
            {
            case through.Right:
                if (transform.position.x >= CurrentRoom.left + xtiles / 2)
                {
                    b_through = through.None;
                    target.gameObject.GetComponent <Platformer2DUserControl>().enabled = true;
                }
                else
                {
                    transform.position = new Vector3(transform.position.x + 0.5f, transform.position.y, transform.position.z);
                }
                break;

            case through.Left:
                if (transform.position.x <= CurrentRoom.right - xtiles / 2)
                {
                    b_through = through.None;
                    target.gameObject.GetComponent <Platformer2DUserControl>().enabled = true;
                }
                else
                {
                    transform.position = new Vector3(transform.position.x - 0.5f, transform.position.y, transform.position.z);
                }
                break;

            case through.None:
                if (target != null)
                {
                    // player view
                    // left
                    float PlayerViewLeft = target.position.x - 10f;
                    float RoomLeft       = CurrentRoom.left;
                    if (PlayerViewLeft < RoomLeft)
                    {
                        PlayerViewLeft = RoomLeft;
                    }
                    else
                    {
                        // right
                        float PlayerViewRight = target.position.x + 10f;
                        float RoomRight       = CurrentRoom.right;
                        if (PlayerViewRight > RoomRight)
                        {
                            PlayerViewRight = RoomRight;
                            PlayerViewLeft  = PlayerViewRight - 20f;
                        }
                    }

                    // up
                    float PlayerViewUp = target.position.y + ytiles / 2;
                    float RoomUp       = CurrentRoom.up;
                    if (PlayerViewUp > RoomUp)
                    {
                        PlayerViewUp = RoomUp;
                    }
                    else
                    {
                        // down
                        float PlayerViewDown = target.position.y - ytiles / 2;
                        float RoomDown       = CurrentRoom.down;
                        if (PlayerViewDown < RoomDown)
                        {
                            PlayerViewDown = RoomDown;
                            PlayerViewUp   = PlayerViewDown + ytiles;
                        }
                    }

                    transform.position = new Vector3(PlayerViewLeft + 10f, PlayerViewUp - ytiles / 2, -20);

                    // walk through right
                    if (target.position.x > CurrentRoom.right)
                    {
                        b_through   = through.Right;
                        CurrentRoom = FindCurrentRoom();
                        target.gameObject.GetComponent <Platformer2DUserControl>().enabled = false;
                        target.gameObject.GetComponent <Physics2DM>().velocity             = Vector3.zero;
                    }
                    // walk through left
                    if (target.position.x < CurrentRoom.left)
                    {
                        b_through   = through.Left;
                        CurrentRoom = FindCurrentRoom();
                        target.gameObject.GetComponent <Platformer2DUserControl>().enabled = false;
                        target.gameObject.GetComponent <Physics2DM>().velocity             = Vector3.zero;
                    }
                }
                break;
            }
            break;
        }
    }
Пример #8
0
    public Rect4 Local2World(Transform transform)
    {
        Rect4 collider = new Rect4(transform.position.y + up, transform.position.y + down, transform.position.x + left, transform.position.x + right);

        return(collider);
    }