京城游戏人-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 的位置无所谓
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章