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

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

  • 相关阅读:
    Prometheus实现微信邮件钉钉报警
    产品需求文档和原型
    各类数据集
    redis与mysql数据同步
    hadoop hbase hive spark对应版本
    Redis集群的搭建
    mysql数据库数据与redis同步
    企业级Zabbix监控实战(一)
    mysql实现高可用架构之MHA
    04-爬取单个英雄联盟英雄的符文图片
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6038194.html
Copyright © 2011-2022 走看看