打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
7.3 观察模型
Unity支持.fbx格式的动画模型,直接将其拖入Hierachy视图即可使用。

本例通过实时获取鼠标的位置来旋转主摄像机观察模型。

下述代码:target对象为摄像机旋转的参照物,LateUpdate()用于监听鼠标在屏幕中的坐标。计算出摄像机的位置与旋转的角度,继而实现通过移动鼠标摄像机来观察模型。

using UnityEngine;
using System.Collections;

public class look : MonoBehaviour {
//摄像机参照的模型
public Transform target;

//摄像机距离模型的默认距离
public float distance=20.0f;

//鼠标在x轴和y轴方向移动的角度
float x;
float y;

//限制旋转角度的最小值和最大值
float YMinLimint=-20.0f;
float YMaxLimit=80.0f;

//鼠标在x和y轴方向移动的速度
float xSpeed=250.0f;
float ySpeed=120.0f;

// Use this for initialization
void Start () {
//初始化x和y轴角度,使其等于参照模型的角度
Vector2 angles=transform.eulerAngles;
x=angles.y;
y=angles.x;

if(gameObject.GetComponent<Rigidbody>())
{
gameObject.GetComponent<Rigidbody>().freezeRotation=true;
}
}
// Update is called once per frame
void Update () {
if(target){

x+=Input.GetAxis("Mouse X")*xSpeed*0.02f;
y-=Input.GetAxis("Mouse Y")*ySpeed*0.02f;
y=ClampAngle(y,YMinLimint,YMaxLimit);
Quaternion rotation=Quaternion.Euler(y,x,0);
Vector3 position=rotation*new Vector3(0.0f,0.0f,-distance)+target.position;
//设置摄像机的位置和旋转
transform.rotation=rotation;
transform.position=position;
}

}
float ClampAngle(float angle,float min,float max)
{
if(angle<-360)
{
angle+=360;
}
if(angle>360)
{
angle-=360;
}

return Mathf.Clamp(angle,min,max);
}


}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Unity3d之Quaternion 学习与应用旋转四元数
[Unity3D]Unity3D游戏开发之自由视角下的角色控制
Unity3D 控制物体移动、旋转、缩放
[unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
Unity从青铜 到 王者!只差这篇让你学会Unity中最重要的部分——脚本组件
Unity 内的敌人AI 或者 有限状态机FSM实现AI
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服