Thứ Ba, 18 tháng 2, 2014

Project RPG BÀI 11. TẠO ĐIỂM HỒI SINH


Khi nhân vật được khởi tạo hoặc chết trong game, sau một khoảng thời gian nhân vật đó sẽ được hồi sinh và được đưa đến điểm nhất định hay còn gọi là "về làng", điểm đó được gọi là điểm hồi sinh (spawn point).



B1. Double click vào scene Level1 để tiến hành làm việc trên scene này. Sau đó vào Game Object | Create other | Terrain để tiến hành tạo địa hình cho game.


B2. Nhấp phải vào thẻ Project và chọn Import Package | Terrain Assets để sử dụng các file ảnh làm vật liệu cho địa hình.


B3. Tại thẻ Hierarchy, nhấp chọn Terrain, qua thẻ Inspector, sử dụng các công cụ trong Terrain (Script) để tạo độ ghồ ghề, mấp mô cho terrain theo ý bạn.

 

 

B4. Vẫn ở thẻ Inspector, nhấp chọn Paint Texture, nhấp chuột vào nút Edit Textures và chọn Add Texture. Tại khung Texture, nhấp chọn nút Select và double click vào Grass (Hill). Ấn nút Add để gán vật liệu này cho địa hình.

   

B5. Vào Game Object | Create Empty và đặt tên là Player Spawn Point, dùng công cụ dịch chuyển và kéo game object này ra vị trí rộng rãi để làm điểm hồi sinh. Nhớ kéo lên phía trên địa hình một khoảng bởi vì khi khởi tạo mô hình, nhân vật của bạn có thể bị rơi xuống bên dưới địa hình bởi lực hút.


B6. Double click vào file C# GameSettings và chèn thêm dòng code tô đỏ như sau:

public class GameSettings : MonoBehaviour {
    public const string PLAYER_SPAWN_POINT = "Player Spawn Point";        

    //This is the name of the gameobject that the player will spawn on at the start of level
    void Awake(){
        DontDestroyOnLoad(this);
    }


B7. Double click vào file C# GameMaster và xóa tất cả đi, chèn lại đoạn code sau vào:

using UnityEngine;
using System.Collections;

public class GameMaster : MonoBehaviour {
    public GameObject playerCharacter;
    public GameObject gameSettings;
    public Camera mainCamera;

    public float zOffset;
    public float yOffset;
    public float xRotOffset;

    private GameObject _pc;
    private PlayerCharacter _pcScript;

    private Vector3 _playerSpawnPointPos;            //this is the place where player will spawn

    // Use this for initialization
    void Start () {
        _playerSpawnPointPos = new Vector3(107, 1, 116);        //the default position for our player spawn point

        GameObject go = GameObject.Find(GameSettings.PLAYER_SPAWN_POINT);

        if(go == null){
            Debug.LogWarning("Can not find Player Spawn Point");

            go = new GameObject(GameSettings.PLAYER_SPAWN_POINT);
            Debug.Log("Created Player Spawn Point");

            go.transform.position = _playerSpawnPointPos;
            Debug.Log("Moved Player Spawn Point");
        }

        _pc = Instantiate(playerCharacter, go.transform.position, Quaternion.identity) as GameObject;
        _pc.name = "pc";

        _pcScript = _pc.GetComponent<PlayerCharacter>();

        zOffset = -2.5f;
        yOffset = 2.5f;
        xRotOffset = 22.5f;
        mainCamera.transform.position = new Vector3 (_pc.transform.position.x, _pc.transform.position.y + yOffset, _pc.transform.position.z + zOffset);
        mainCamera.transform.Rotate(xRotOffset, 0, 0);

        LoadCharacter();
    }

    public void LoadCharacter(){
        GameObject gs = GameObject.Find("__GameSettings");

        if(gs == null){
            GameObject gs1 = Instantiate(gameSettings, Vector3.zero, Quaternion.identity) as GameObject;
            gs1.name = "__GameSettings";
        }
            GameSettings gsScript = GameObject.Find ("__GameSettings").GetComponent<GameSettings>();

            //loading the character data
            gsScript.LoadCharacterData();


    }
}


Nếu bạn tự tạo ra điểm hồi sinh và dùng công cụ di chuyển bằng chuột để kéo thả điểm hồi sinh đến nơi bạn muốn như đã làm ở B5 rồi bạn có thể qua B9. Bạn cũng có thể để file script tự tạo điểm hồi sinh cho bạn bằng cách thiết lập tọa độ mặc định cho game object này thông qua B8.

B8 (Xóa Player Spawn Point ở thẻ Hierarchy đi). Hãy thay đổi tọa độ điểm hồi sinh bằng cách đổi tọa độ của 3 tọa độ được tô đỏ (107, 1, 116) ở file C# GameMaster phù hợp với địa hình mà bạn đã tạo, nên đặt tọa độ điểm hồi sinh ở nơi rộng và bằng phẳng để tránh việc nhân vật bị kẹt vào địa hình.

B9. Ấn Ctrl + S để lưu scene Level1 lại. Nhấp nút Play để kiểm tra thành quả.

Không có nhận xét nào:

Đăng nhận xét