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

                Unity3D for iOS初级教程:Part 1/3(下)

    一个手指来统治他们

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

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

    从你的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.

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

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

  • 相关阅读:
    c# 调用短信平台接口,给手机发送短信
    WPF Bitmap转成Imagesource的性能优化
    WPF TriggerAction弹出子窗体 TargetedTrigger、TargetedTriggerAction用法
    统一社会信用代码 正则验证
    全选或反选表格中第一列的checkbok
    数据库五大约束使用方法
    通用的通过模型插入或更新数据库
    U8隐藏的配置项
    android上如何写配置文件
    Android Studio出现Failed to open zip file问题的解决方法
  • 原文地址:https://www.cnblogs.com/alongu3d/p/3111735.html
Copyright © 2011-2022 走看看