美文网首页Unity3D 成神之路unityUnity动画相关
摄像机跟随、视野远近、视野环绕、小地图

摄像机跟随、视野远近、视野环绕、小地图

作者: _凉笙 | 来源:发表于2017-07-21 12:29 被阅读55次
摄像机跟随人物
  private Transform Player;
    //偏移值
    private Vector3 offsetPosition;
    void Start () {
        //根据Tag值取得游戏对象的transform
        Player = GameObject.FindGameObjectWithTag("Player").transform;
       //摄像机朝向游戏对象 
        transform.LookAt(Player.transform);
      //偏移量
        offsetPosition = transform.position - Player.position;
    }
    
    
    void Update () {
        //摄像机跟随
        transform.position = offsetPosition + Player.position;
  }
1点31分32秒.gif
摄像机视野拉近拉远
 //距离
    public float distance = 0;
    public float scrollSpeed = 10;
 /// <summary>
    /// 处理视野拉近拉远效果
    /// </summary>
    private void scroliView() {
        // Input.GetAxis("Mouse ScrollWheel")//滚轮向前滑动返回正值,向后滑动返回负值
        distance = offsetPosition.magnitude;//得到摄像机与Player的距离
        distance -= Input.GetAxis("Mouse ScrollWheel")*scrollSpeed;// 距离拉近放大,那distance就会减少,所以-=一个正值那滚轮向前就会放大
        distance = Mathf.Clamp(distance,2,18);//距离限制,距离在2到18之间
        offsetPosition = offsetPosition.normalized * distance;//offsetPosition.normalized返回的长度为1,相当于吧偏移量的长度设为distance
    }
33分52秒.gif
控制视野环绕效果
 private bool isRotating = false;
    // 旋转的速度
    public  float rotateSpeed = 2f;
     /// <summary>
    /// 处理视野的旋转
    /// </summary>
    void RotateView() {
        //Input.GetAxis("Mouse X");//得到鼠标在水平方向的滑动
        //Input.GetAxis("Mouse X");//得到鼠标在垂直方向的滑动
        if (Input.GetMouseButtonDown(1))
        {
            isRotating = true;       
        }
        else if (Input.GetMouseButtonUp(1)) {
            isRotating = false;
        }
        if (isRotating) {
            transform.RotateAround(Player.position, Player.up, rotateSpeed * Input.GetAxis("Mouse X"));//围绕游戏对象的X轴进行旋转

            Vector3 originaPos = transform.position;
            Quaternion originalRotation = transform.rotation;

            transform.RotateAround(Player.position, transform.right, -rotateSpeed * Input.GetAxis("Mouse Y"));//围绕摄像机的Y轴进行旋转
            float x = transform.eulerAngles.x;//eulerAngles为Rotationg
            //限制范围,X旋转到10到80之间
            if (x < 10||x>80) {
                transform.position = originaPos;
                transform.rotation = originalRotation;
            }
        }
        offsetPosition = transform.position - Player.position;
    }
21日12点27分50秒.gif
小地图

小地图如何制作呢,首先我们创建一个小地图的摄像机让人物对象成为其父对象、


Paste_Image.png

随后我们创建一个Render Texture并命名为Minimap,再将Minimap拖入我们小地图摄像机的Target Texture上这样我们的Minimap就取得了摄像机上的图像了.


Paste_Image.png
Paste_Image.png 然后我们再创建一个材质球,并将Shader类型改为Custom/Mask,然后将Render Texture和一个遮罩贴图放上。
Paste_Image.png

然后创建一个Image将Minimap材质进去就OK了。


Paste_Image.png 好吧,效果有点丑,但是我们加上框架就不错了,下面我们去实现小地图放大缩小的功能。
Paste_Image.png
 private Camera minimapCamera;

    void Start() {
        minimapCamera = GameObject.FindGameObjectWithTag(Tags.minimap).GetComponent<Camera>();
    }

    public void OnZoomInClick() {
        //放大
        minimapCamera.orthographicSize--;
    }
    public void OnZoomOutClick() {
        //缩小
        minimapCamera.orthographicSize++;
    }
点27分11秒.gif

相关文章

  • 摄像机跟随、视野远近、视野环绕、小地图

    摄像机跟随人物 摄像机视野拉近拉远 控制视野环绕效果 小地图 小地图如何制作呢,首先我们创建一个小地图的摄像机让人...

  • 谷歌地图最佳视野

  • 意志决定成败,视野决定远近,品格决定高下,思维决定快慢。

  • 2.视野控制,敌人行走路径控制

    视野 1. 调整camera视野,确保整个地图可见 2. 给camera添加脚本,过去上下左右移动,vertica...

  • 2018-12-09

    unity镜头视野控制的三种方法: 先获取摄像机对象 ''' //camera = GetComponent

  • 佰块的视野

    50元的视野,100元的视野,1000元的视野,10000元的视野……可大可小,一定程度上还与金钱的堆砌,...

  • 视野

    两只狼来到草原,一只狼很失落 因为他看不见肉,这是视力; 另一只狼很兴奋,因为他知道有草就会有羊,这是视野。 这就...

  • 视野

    仍记得,大学里有个老师说: “视野开,才有大未来”

  • 视野

    一幅图看到的三个层面就是人一生要经历三种状态。 这位兄弟是没有书要读,这个时代就像我们还未去上幼儿园一样感觉这个世...

  • 视野

    小时候,刚学骑单车时,总习惯低着头看着车轮,大人们总教导,要看着远方,不要看脚下,才能骑好单车。 如果你想走好路,...

网友评论

    本文标题:摄像机跟随、视野远近、视野环绕、小地图

    本文链接:https://www.haomeiwen.com/subject/wzwskxtx.html