10/22/2013

Cookbook - HƯỚNG DẪN TẠO HIỆU ỨNG TRANH TRONG TRANH



  - Hiệu ứng Tranh-Trong-Tranh -
Bài viết này sẽ chỉ cho các bạn cách để tạo thêm một góc nhìn nữa trong game. VD như bạn muốn chiếu một góc nhìn ở một quan cảnh khác so với góc nhìn hiện tại (thường thấy trong các kính chiếu hậu của game đua xe hơi) hay bạn muốn chia màn hình chính ra thành nhiều màn hình nhỏ, mỗi màn hình sử dụng một camera khác nhau trong các game nhiều người chơi. Bài viết này sẽ giúp các bạn giải quyết những vấn đề trên.

Chuẩn bị
basicLevel

Cách để làm

B1. Tạo một project mới bằng cách ấn Ctrl + N và điều chỉnh đường dẫn phù hợp. Nhấp chuột phải vào vùng trống trong thẻ Project và chọn Import Package | Custom Package và mở file basicLevel đã tải ở phần trên.


B2. Trong thẻ Project, vào thư mục 02_01_02 và double click vào file basicScene.


B3. Tại thẻ Hierarchy, chọn Creat | Camera để tạo thêm một camera mới trong game.


B4. Nhấp chọn Camera vừa tạo, tại thẻ Inspector điều chỉnh tọa độ và nhập giá trị Depth = 1 như hình sau:


B5. Nhấp chuột phải vào  vùng trống trong thẻ Project và chọn Creat | C# Script và đặt tên là PictureInPicture.

B6. Double click vào file C# vừa tạo và nhập đoạn code sau vào:

using UnityEngine;

public class PictureInPicture: MonoBehaviour
{
    public enum HorizontalAlignment
    {
        left,
        center,
        right
    };

    public enum VerticalAlignment
    {
        top,
        middle,
        bottom
    };
    public HorizontalAlignment horizontalAlignment = HorizontalAlignment.left;
    public VerticalAlignment verticalAlignment = VerticalAlignment.top;
    public enum ScreenDimensions
    {
        pixels,
        screen_percentage
    };
    public ScreenDimensions dimensionsIn = ScreenDimensions.pixels;
    public int width = 50;
    public int height = 50;
    public float xOffset = 0f;
    public float yOffset = 0f;
    public bool  update = true;
    private int hsize, vsize, hloc, vloc;
   
    void Start ()
    {
        AdjustCamera ();
    }

    void Update ()
    {
        if (update)
            AdjustCamera ();
    }

    void AdjustCamera ()
    {
        if (dimensionsIn == ScreenDimensions.screen_percentage) {
            hsize = Mathf.RoundToInt (width * 0.01f * Screen.width);
            vsize = Mathf.RoundToInt (height * 0.01f * Screen.height);
        } else {
            hsize = width;
            vsize = height;
        }
 
        if (horizontalAlignment == HorizontalAlignment.left) {
            hloc = Mathf.RoundToInt (xOffset * 0.01f * Screen.width);
        } else if (horizontalAlignment == HorizontalAlignment.right) {
            hloc = Mathf.RoundToInt ((Screen.width - hsize) - (xOffset * 0.01f * Screen.width));
        } else {
            hloc = Mathf.RoundToInt (((Screen.width * 0.5f) - (hsize * 0.5f)) - (xOffset * 0.01f * Screen.height));
        }
 
        if (verticalAlignment == VerticalAlignment.top) {
            vloc = Mathf.RoundToInt ((Screen.height - vsize) - (yOffset * 0.01f * Screen.height));
        } else if (verticalAlignment == VerticalAlignment.bottom) {
            vloc = Mathf.RoundToInt (yOffset * 0.01f * Screen.height);
        } else {
            vloc = Mathf.RoundToInt (((Screen.height * 0.5f) - (vsize * 0.5f)) - (yOffset * 0.01f * Screen.height));
        }    
        camera.pixelRect = new Rect (hloc, vloc, hsize, vsize);
    }
}

B7. Save file C# vừa tạo bằng cách ấn Ctrl + S và gắn nó vào Camera bạn mới tạo khi nãy bằng cách kéo thả file C# trong thẻ Project vào Camera trong thẻ Hierarchy.


B8. Nhấp chọn Camera trong thẻ Hierarchy, bỏ chọn dấu check ở mục Audio Listener trong thẻ Inspector và thiết lập các điều chỉnh như hình sau:


B9. Ấn nút Play và xem thành quả.

1 comment:

  1. hi, ở B7, khi kéo vào file Camera ở Hierarchy thì nó báo lỗi " Pls fix compile error..." Xin tư vấn giúp

    ReplyDelete