Unity全方位观察物体

最近的项目中遇到了一个需求:要求能全方位并细致的观察物体。
一开始我的想法是物体旋转,然后相机能够缩放视角,
于是立马着手写出了以下的代码:

 float x;
 float y;
 float xSpeed;
 float ySpeed;
 private void Update()
{
 	if (Input.GetMouseButton(0))				//一般是鼠标右键控制,但是工程要打包成Web版本按键会有冲突所以此处用鼠标左键
 	{
      		x = Input.GetAxis("Mouse X") * xSpeed;
     		y = Input.GetAxis("Mouse Y") * ySpeed;
      		transform.Rotate(new Vector3(y, x, 0),Space.World);	//此处遇到了问题,如果没有Space.World物体旋转180度之后旋转轴会反向旋转
  	} else if (Input.GetAxis("Mouse ScrollWheel") != 0)
  	{
   		float ViewValue=0;
       		if (ViewValue< 0)
                 {
                	//范围值限定
                	if (Camera.main.fieldOfView <= 100)
                         	Camera.main.fieldOfView += 2;
                     	if (Camera.main.orthographicSize <= 20)
                        	 Camera.main.orthographicSize += 0.5F;
                 }
                 //Zoom in  
                if (ViewValue > 0)
                {
                	//范围值限定
                	if (Camera.main.fieldOfView > 2)
                         	Camera.main.fieldOfView -= 2;
                    	 if (Camera.main.orthographicSize >= 1)
                         	Camera.main.orthographicSize -= 0.5F;
                 }
  	}
 }

但是经过测试之后发现效果不是很好,尤其是在两个轴分量都有的时候,所以我决定只用鼠标的X轴分量,Y轴的旋转用键盘按键来控制,注意这里的LookAt方法,可以让摄像机在旋转的同时一直对准要观察的物体:

void Update()
{  
        if (Input.GetMouseButton(0))
        {         
             RotateRenTi(Input.GetAxis("Mouse X"));
             RotCam(Input.GetAxis("Mouse Y"));
        } else if (Input.GetAxis("Mouse ScrollWheel") != 0)
  	{
    		float ViewValue=0;
      		if (ViewValue< 0)
                {
                	//范围值限定
               		if (Camera.main.fieldOfView <= 100)
               		{
               			Camera.main.fieldOfView += 2;
			}                        	
                     	else if (Camera.main.orthographicSize <= 20)
                     	{
                     		Camera.main.orthographicSize += 0.5F;
			}                         	
                 }
                //Zoom in  
               else   if (ViewValue > 0)
               {
                	//范围值限定
                	if (Camera.main.fieldOfView > 2)
                	{   
                		Camera.main.fieldOfView -= 2;
                	}else  if (Camera.main.orthographicSize >= 1)
                	{
                     		Camera.main.orthographicSize -= 0.5F;
                	}                   
          	}
  	}
        Camera.main.transform.LookAt(GameObject.Find("ZJZY_RenTi0_Dian07_05").transform);
        if (Input.GetKey(KeyCode.UpArrow))
        {
        	UpKeyDown(); 
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
        	DownKeyDown();
        }
        
	private void UpKeyDown()
	{
            Camera.main.transform.Translate(Vector3.up * -0.01f);
        }
	private void DownKeyDown()
        {
            Camera.main.transform.Translate(Vector3.up * 0.01f);
        }
  	private void  RotCam()
        {
            Camera.main.transform.Rotate(new Vector3(1,0,0) *RotCam*20f, Time.deltaTime *20f);         
        }
}

至此,能够细致观察物体的功能完成,经过测试发现效果还算不错。

本人小菜鸟,如果您有不明白的地方,或者是有更好的方法,请私信联系我,本人将不胜感激。

感谢阅读。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity 是一种用于开发 3D 和 2D 游戏以及应用程序的跨平台游戏引擎。在 Unity 中,可以轻松地实现自由观察物体的功能。自由观察物体可以让用户自由地控制视角,使其可以自由地旋转、平移和缩放对象。这个功能在游戏中非常常用,比如在第一人称射击游戏中,玩家可以控制视角来寻找隐藏在角落里的敌人或者收集物品。 在 Unity 中,可以通过添加脚本来启用自由观察功能。在脚本中,可以定义相机的位置、旋转和缩放,以及设定观察的目标物体。然后,将脚本附加到相机上即可。此外,Unity 还提供了许多内置的脚本和组件,可以帮助开发者更方便地实现自由观察功能。 自由观察物体的实现方法有很多种。最简单的方法是使用鼠标移动相机,这可以通过获取鼠标的位置和移动向量来实现。另一种方法是使用触摸屏幕,这可以通过获取触摸的位置和移动向量来实现。还有一种方法是使用键盘和游戏手柄,这可以通过监听输入事件来实现。 总之,自由观察物体Unity 中非常重要的功能之一。它可以帮助开发者更好地控制游戏对象的视角,从而提高游戏的玩法和用户体验。 ### 回答2: Unity 自由观察物体是指在Unity中,我们可以通过调整视角,以自己想要的角度来观察场景中的物体。这种操作方式非常直观且方便,能够帮助开发者更好地把握游戏场景中物体的位置、大小、旋转等信息。在Unity中,自由观察物体需要使用场景视图中的相机工具,通过拖动鼠标或使用快捷键来调整相机的视角,从而实现自由观察。此外,Unity中还可以通过预设视图、相机跟随等方式来帮助开发者更好地观察游戏中的物体。在游戏开发过程中,自由观察物体可以帮助开发者更好地了解游戏场景中物体之间的关系,为游戏的制作提供更好的工具支持。总之,Unity 自由观察物体是一个非常实用的功能,能够提高开发效率,减少开发难度,帮助开发者更好地创造出优秀的游戏作品。 ### 回答3: Unity是一款非常流行的游戏开发引擎,它拥有强大的编辑器和丰富的工具集,可以帮助开发者轻松创建出高质量的游戏和应用。其中,自由观察物体Unity的一个非常好用的功能。 自由观察物体指的是在场景中选中一个物体后,可以自由的旋转、平移、缩放和移动该物体,实时查看其不同角度和位置下的效果。这个功能对于开发者来说非常有帮助,因为它可以帮助他们更好地设计和调整场景中的物体位置和布局。 使用自由观察物体功能非常简单,只需要在编辑器中选中需要观察物体,然后点击编辑器中的场景视图,即可进入自由观察模式。在模式下,可以使用鼠标左键进行旋转,右键进行平移,滚轮进行缩放,来观察目标物体。还可以使用快捷键进行切换视图模式、锁定轴向等操作,以便更好地完成任务。 总的来说,自由观察物体Unity非常实用的一个工具,它可以帮助开发者更好地设计和调整游戏场景,提高开发效率,实现更好的游戏体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值