zoukankan      html  css  js  c++  java
  • Unity3D for iOS初级教程:Part 1/3(下)

    转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111735.html

    一个手指来统治他们

    但是等等,你还没有完全完成!

    如果你玩游戏有一会,你会注意到有些奇怪的事情。你可以通过一个手指来移动方块,但是当你用两个手指离开它相同的距离方块也可以被移动。这是什么回事呢?

    从你的MoveSimple脚本中回忆起这行:

    var ray : Ray = Camera.main.ScreenPointToRay 
                        (Input.mousePosition);

    它创建了一条从摄像头到触摸点的射线。触摸点用Input.mousePosition来表示。当你在iOS设备上运行的时候,Input.mousePosition是作为所有当前触摸点平均位置来计算的。放置你的手指,若平均值落在角色上,就会让角色移动!

    你应该修正这点来避免困扰用户。你可以使用Unity中可以使用的触摸相关函数来监测触摸事件,并且找到一个更加精确的触摸位置。

    打开你的MoveSimple脚本。在文件的最上面(其他变量所在的位置)添加一个标志,来指示你可以使用触摸输入:

    private var isTouchDevice : boolean = false;

    你这样做了后,你就可以测试运行在iOS和Unity编辑器上。如果你只打算在iOS上测试,那么你可以跳过触摸检查的逻辑,然后简单的使用触摸相关的函数。

    下一步添加一个Awake()函数,来完成一个运行时的检查,探知游戏是否运行在一个iOS环境下。这个Awake()函数仅仅被调用一次,就是当游戏加载的时候:

    function Awake() {
        if (Application.platform == RuntimePlatform.IPhonePlayer) 
            isTouchDevice = true; 
        else
            isTouchDevice = false; 
    }

    Application.platform返回游戏正在运行的平台。RuntimePlatform.IPhonePlayer指示游戏正运行在iOS上。

    最后,根据下面修改你的Update()函数来处理触摸输入:

    function Update () {
    
        var clickDetected : boolean;
        var touchPosition : Vector3;
    
        // Detect click and calculate touch position
        if (isTouchDevice) {
            clickDetected = (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began);
            touchPosition = Input.GetTouch(0).position;
        } else {
            clickDetected = (Input.GetMouseButtonDown(0));
            touchPosition = Input.mousePosition;
        }
    
        // Detect clicks
        if (clickDetected) {        
            // Check if the GameObject is clicked by casting a
            // Ray from the main camera to the touched position.
            var ray : Ray = Camera.main.ScreenPointToRay 
                                (touchPosition);
            var hit : RaycastHit;
             ...

    保存你的修改。

    你正在使用两个新的变量,clickDetected和touchPosition,来监测点击和保存点击的位置。如果在iOS上运行,你通过检查触摸是在开始状态来判断点击。然后根据首个触摸来计算点击的位置。如果你没有运行在iOS上,逻辑和之前的一样。

    在重新构建项目之前,关闭Xcode项目。现在重新在Unity中的Build Settings对话框里构建。如果出现带有一个关于构建的文件夹已经存在的警告,选择Replace.

    Build warning.

    当Xcode项目构建完成,打开它,然后在你的iOS设备上运行。核对你可以移动英勇的小方块,而且让你用两个手指移动它的错误已经消失了。

    向哪里进发?

    恭喜你已经完成学习用Unity开发的基础部分,和如何部署到iOS上!这里有一些从项目开始到目前为止的所有的代码下载: Unity ProjectXcode Project.

    这份教程的下个部分,通过增强英勇的小方块的移动和改善场景,你会构建这个非常简单的游戏。你也会做一些调试的工作!

    在此期间,如果你有任何关于到目前位置你所做的问题或建议,请跳转到论坛中的相关会话中!

  • 相关阅读:
    leetcode 350. Intersection of Two Arrays II
    leetcode 278. First Bad Version
    leetcode 34. Find First and Last Position of Element in Sorted Array
    leetcode 54. Spiral Matrix
    leetcode 59. Spiral Matrix II
    leetcode 44. Wildcard Matching
    leetcode 10. Regular Expression Matching(正则表达式匹配)
    leetcode 174. Dungeon Game (地下城游戏)
    leetcode 36. Valid Sudoku
    Angular Elements
  • 原文地址:https://www.cnblogs.com/feiyu-mdm/p/5568645.html
Copyright © 2011-2022 走看看