zoukankan      html  css  js  c++  java
  • 重力感应操控(unity iphone)

    方案一:speed
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public var simulateAccelerometer:boolean = false;
    var speed = 10.0;
    function Update () {
        var dir : Vector3 = Vector3.zero;
        if (simulateAccelerometer)
        {
            dir.x = Input.GetAxis("Horizontal");
            dir.y = Input.GetAxis("Vertical");
        }
        else
        {
            dir.x = Input.acceleration.x;
            dir.y = Input.acceleration.y;
         
            // clamp acceleration vector to unit sphere
            if (dir.sqrMagnitude > 1)
                dir.Normalize();
            // Make it move 10 meters per second instead of 10 meters per frame...
        }
        dir *= Time.deltaTime;
        // Move object
        transform.Translate (dir * speed);
    }

    也可以把速度换成力

    方案二:Force
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public var force:float = 1.0;
    public var simulateAccelerometer:boolean = false;
     
    function FixedUpdate () {
        var dir : Vector3 = Vector3.zero;
     
        if (simulateAccelerometer)
        {
            // using joystick input instead of iPhone accelerometer
            dir.x = Input.GetAxis("Horizontal");
            dir.y = Input.GetAxis("Vertical");
        }
        else
        {
            // we assume that device is held parallel to the ground
            // and Home button is in the right hand
             
            // remap device acceleration axis to game coordinates
            // 1) XY plane of the device is mapped onto XZ plane
            // 2) rotated 90 degrees around Y axis
            dir.x = Input.acceleration.y;
            dir.y = Input.acceleration.x;
             
            // clamp acceleration vector to unit sphere
            if (dir.sqrMagnitude > 1)
                dir.Normalize();
        }
         
        rigidbody.AddForce(dir * force);
    }

    个人感觉方案一操控起来比较灵活,反应灵敏。方案二操控起来具有惯性,缓冲明显。

  • 相关阅读:
    天气预报FLEX版本
    关于“ORA01000: 超出打开游标的最大数”
    WIN7(x64) IIS7.5 404.17错误:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
    解决GDI+中“内存不足”问题
    Stack Overflow Exception
    清洁的Javascript
    设置SQL Server数据库中某些表为只读的多种方法
    程序员肿么了?为何总被认为是“屌丝”
    jquery datepicker 显示12个月份
    apache2.4配置虚拟主机随记
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6038194.html
Copyright © 2011-2022 走看看