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);
    }

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

  • 相关阅读:
    玩家移动
    人物上线(激活玩家之后)
    map 玩家上线
    无锁的环形队列
    随笔
    std::bind
    如何查找文件中的schema约束
    myeclipse便捷导包方式
    21 求1+2!+3!+...+20!的和
    20 求出这个数列的前 20 项之和
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6038194.html
Copyright © 2011-2022 走看看