unity3d触屏操作对象运动

using UnityEngine;
using System.Collections;

public class robot : MonoBehaviour {
	
	private GameObject myRobot;
	private Camera carmera;
	
	// Use this for initialization
	void Start () {
		myRobot = GameObject.Find("robot");
		//carmera = Camera.main;
		//第二种方式去获取Camera
		//carmera = GameObject.Find("Main Camera").GetComponent<Camera>();
			
		Input.multiTouchEnabled = true;
	}
	
	// Update is called once per frame
	void Update () {
		handInput();
	}
	
	void handInput() {
#if !UNITY_EDITOR && ( UNITY_IOS || UNITY_ANDROID ) 
		mobileInput();
#else
		if (Input.GetKey(KeyCode.UpArrow)) {
			myRobot.transform.Translate(Vector3.forward * Time.deltaTime);
		}
		if (Input.GetKey(KeyCode.DownArrow)) {
			myRobot.transform.Translate(-Vector3.forward * Time.deltaTime);
		}
		if (Input.GetKey(KeyCode.LeftArrow)) {
			myRobot.transform.Translate(Vector3.left * Time.deltaTime);
		}
		if (Input.GetKey(KeyCode.RightArrow)) {
			myRobot.transform.Translate(Vector3.right * Time.deltaTime);
		}
//		float x = carmera.WorldToScreenPoint(myRobot.transform.position).x;
//		Debug.Log("x = " + x);
#endif 
	}
	
	void mobileInput() {
		if (Input.touchCount == 1) {
			
			if (Input.touches[0].phase == TouchPhase.Moved){
				float x = Input.touches[0].position.x;
				float y = Input.touches[0].position.y;
				if (x > carmera.WorldToScreenPoint(myRobot.transform.position).x) {					
					myRobot.transform.Translate(Vector3.right * Time.deltaTime); 
				} else if (x < carmera.WorldToScreenPoint(myRobot.transform.position).x) {							
					myRobot.transform.Translate(-Vector3.right * Time.deltaTime); 
				}
				
				if (y > carmera.WorldToScreenPoint(myRobot.transform.position).y) {					
					myRobot.transform.Translate(Vector3.forward * Time.deltaTime); 
				} else if (y < carmera.WorldToScreenPoint(myRobot.transform.position).y) {							
					myRobot.transform.Translate(-Vector3.forward * Time.deltaTime); 
				}				
			}
		}
	}
	
}

  1. 两种获取Camera方式。

     2. 手机触屏操作,需要进行世界坐标转屏幕坐标。 

转载于:https://www.cnblogs.com/yuan19/p/3368251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值