京城遊戲人-Day1:一個基於 Unity 的 iOS 互動 Demo

京城遊戲人-Day1:一個基於 Unity 的 iOS 互動 Demo

-

從今天起(2016.6.25)開始我的 Unity 遊戲開發之路。由於此前使用過老外開發的 iOS 遊戲引擎 Cocos2d-iphone、中國人開發的跨平臺開源遊戲引擎 Cocos2d-x,初步規劃,先從 Unity 入手,上線幾個。

本例主要參考一本大陸人寫的 Unity3D 的書,書不在手邊,忘記名字了,就記得是京東上搜索「Unity3D 5」的第一個結果。

  • 本文作者:大銳哥
  • 博客地址:http://blog.csdn.net/prevention
  • 凡是帶有此句話的文章,如果不是在 CSDN 的 prevention 博客上看到的,則都是未經本人允許的轉載,您可以舉報或在本文下留言告知。

1. 流程

  • 創建 Unity3D 項目
  • 創建一個立方體,Cube(GameObject - 3D Object - Cube)
  • 創建一個平行光,Directional Light(GameObject - Light - Directional Light)
  • 設置這些東西的屬性
  • 導出 iOS 工程,並在 Xcode 中編譯運行

2. 立方體、平行光的屬性

創建一個 Cube 後,Position、Rotation、Scale 不太重要(但是如果太離譜,可能會在攝像機裏看不到),我把 Cube 和攝像機的位置設置如下:

立方體

  • Position:1.5,0.9,8
  • Rotation:13,12,16
  • Scale:5,5,5

攝像機

  • Position:-1.25,-0.05,0
  • Rotation:50,330,0
  • Scale:1,1,1

更重要的,是要給 Cube 加紋理

3. 給 Cube 加 Material

在 Project 視圖中右擊空白處 Create - Material,Shader 可以選「Nature/SpeedTree」。然後把這個 Material 拖動到 Cube 身上(在 Hierarchy 中)。

4. 編寫腳本

先編寫腳本,然後把它拖動到 Main Camera 身上(Hierarchy)。

using UnityEngine;
using System.Collections;

public class TouchTest : MonoBehaviour
{
    public GameObject ball;

    private float lastDis = 0;
    private float cameraDis = -20;
    private float ScaleDump = 0.1f;

    void Update()
    {
        if (Input.touchCount == 1)
    {
        Touch t = Input.GetTouch (0);

        // 手指在移動
        if (t.phase == TouchPhase.Moved)
        {
            ball.transform.Rotate (Vector3.right, Input.GetAxis("Mouse Y"), Space.World);
            ball.transform.Rotate (Vector3.up, -1 * Input.GetAxis("Mouse X"), Space.World);
        }
    }
    else if (Input.touchCount > 1)
    {
        Touch t1 = Input.GetTouch (0);
        Touch t2 = Input.GetTouch (1);

        // 觸摸開始
        if (t2.phase == TouchPhase.Began)
        {
            lastDis = Vector2.Distance (t1.position, t2.position);
        }
        // 兩隻手指都在移動
        else if (t1.phase == TouchPhase.Moved && t2.phase == TouchPhase.Moved)
        {
            float dis = Vector2.Distance (t1.position, t2.position);
            if (Mathf.Abs (dis - lastDis) > 1)
            {
                cameraDis += (dis - lastDis) * ScaleDump;
                cameraDis = Mathf.Clamp (cameraDis, -40, -5);
                lastDis = dis;
            }
        }
    }
    }

    void LateUpdate()
    {
        this.transform.position = new Vector3(0, 0, cameraDis);
    }
}

5. 導出到 Xcode 編譯運行

  • 在 Unity 中選擇 File - Building Settings - iOS - Build,選擇導出位置
  • 在 Xcode 中打開這個項目,build,完鳥

6. 注意

  • 不要把腳本加到 Cube 身上
  • Directional Light 的位置無所謂
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章