纳金网

标题: 调用unity3d iphone的重力感应_代码 [打印本页]

作者: 她。    时间: 2012-6-7 16:49
标题: 调用unity3d iphone的重力感应_代码
方案一:speed



    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

view sourceprint?



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

     
   

     
    }


复制代码
个人感觉方案一操控起来比较灵活,反应灵敏。方案二操控起来具有惯性,缓冲明显。
作者: Zack    时间: 2012-11-25 03:46
学习了。谢谢!
作者: 王者再临    时间: 2012-11-25 11:46
不错的代码,学习!




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5