Unity3D里实现物体移动到目标点,并且摄像机跟着移动的简单方案

初学Unity3D,老大给出个这样的题:当鼠标点击某个位置时,物体将会平滑的移动到此点,并且摄像机会跟随物体运动,自己的实现:。C#代码如下:

其中public Camera cam指定为Main Camera

float speed = 1.0f;
	RaycastHit hit = new RaycastHit();
	Vector3 velocity;
	Vector3 startPos;
	bool canMove = false;
	public Camera cam;
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		
		if(Input.GetMouseButtonUp(0))
		{
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			
			if(Physics.Raycast(ray,out hit,100))
			{
				if(null != hit.transform)
				{
					print("can move");
					canMove = true;
					startPos = transform.position;
					velocity = hit.point - startPos;
				}
					
			}
			
		}
		if(canMove && null != hit.transform)
		{
			print("ready for move");
			print(transform.position.ToString() + hit.point.ToString());
			if((transform.position.x - hit.point.x >0.01 || (transform.position.x - hit.point.x < -0.01)) ||
				(transform.position.y - hit.point.y > 0.01 || (transform.position.y - hit.point.y < -0.01)))
			{
				print("moving");
				transform.Translate(velocity/velocity.magnitude * speed * Time.deltaTime);
				cam.transform.Translate(velocity/velocity.magnitude * speed * Time.deltaTime);
				cam.transform.LookAt(transform.position);
			}else
			{
				print("can not move");
				canMove = false;
			}
			
		}
	}


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值