重力感应操控(unity 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
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);

}

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

你可能感兴趣的:(iPhone)