unity摄像机脚本

直接挂载在摄像机上面即可

1.摄像机自由平移

using UnityEngine;
using System.Collections;

/// <summary>
/// 摄像机视角自由移动
/// </summary>
public class CameraFreeMove : MonoBehaviour
{
    public float moveSpeed = 10; // 设置相机移动速度    
    void Update()
    {
        // 当按住鼠标右键的时候    
        if (Input.GetMouseButton(0))
        {
            // 获取鼠标的x和y的值,乘以速度和Time.deltaTime是因为这个可以是运动起来更平滑    
            float h = Input.GetAxis("Mouse X") * moveSpeed * Time.deltaTime;
            float v = Input.GetAxis("Mouse Y") * moveSpeed * Time.deltaTime;
            // 设置当前摄像机移动,y轴并不改变    
            // 需要摄像机按照世界坐标移动,而不是按照它自身的坐标移动,所以加上Spance.World  
            this.transform.Translate(v, 0, -h, Space.World);
        }
    }
}

 

2.使用鼠标滚轮和双指触摸进行缩放

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraZoom : MonoBehaviour {

    public float maxDistance;//最大距离
    public float minDistance;//最小距离
    public float scaleSpeed;//缩放速度
    public float mouseSpeed;//缩放速度
    private Touch oldTouch1;  //上次触摸点1(手指1)  
    private Touch oldTouch2;  //上次触摸点2(手指2)  

    // Use this for initialization
    void Start () {
        //FairyGUI.GObject a;
        //a.visible = false;
    }
    
    // Update is called once per frame
    void Update () {
        ZoomCamera();
        MouseZoomCamera();
    }

    /// <summary>
    /// 手势屏幕缩放
    /// </summary>
    private void ZoomCamera()
    {
        //至少得要2个触摸点 
        if (Input.touchCount < 2)
        {
            return;
        }

        //多点触摸, 放大缩小  
        Touch newTouch1 = Input.GetTouch(0);
        Touch newTouch2 = Input.GetTouch(1);

        //第2点刚开始接触屏幕, 只记录,不做处理  
        if (newTouch2.phase == TouchPhase.Began)
        {
            oldTouch2 = newTouch2;
            oldTouch1 = newTouch1;
            return;
        }

        //计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型  
        float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
        float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);

        //两个距离之差,为正表示放大手势, 为负表示缩小手势  
        float offset = newDistance - oldDistance;

        Vector3 originalPos = transform.position;
        Quaternion originalRotation = transform.rotation;
        transform.position += offset * transform.forward * scaleSpeed * Time.deltaTime;

        //临时判断值
        float cameraY = transform.position.y;
        if (cameraY < minDistance || cameraY > maxDistance)
        {
            transform.position = originalPos;
            transform.rotation = originalRotation;
        }

        //重新计算
        cameraY = transform.position.y;

        //记住最新的触摸点,下次使用  
        oldTouch1 = newTouch1;
        oldTouch2 = newTouch2;
    }

    /// <summary>
    /// 鼠标滚轮缩放
    /// </summary>
    private void MouseZoomCamera()
    {
        //获取滚轮的值
        float mouseScroll = Input.GetAxis("Mouse ScrollWheel");
        if (Mathf.Abs(mouseScroll) > 0)
        {
            //print("hua");
            Vector3 originalPos = transform.position;
            Quaternion originalRotation = transform.rotation;

            transform.position += mouseScroll * transform.forward * mouseSpeed * Time.deltaTime;
            //临时判断值
            float cameraY = transform.position.y;
            if (cameraY < minDistance || cameraY > maxDistance)
            {
                transform.position = originalPos;
                transform.rotation = originalRotation;
            }

            //cameraY = transform.position.y;
            //print(distance.magnitude);
        }
    }
}

 

转载于:https://www.cnblogs.com/sanyejun/p/7850702.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity摄影机脚本是一种用于控制摄影机行为和视角的脚本。摄影机是游戏中非常重要的组成部分,可以用来确定游戏中玩家或观察者的视角和观察范围。 Unity的摄影机脚本提供了各种功能和参数,使开发人员能够灵活地控制摄影机的行为。首先,我们可以设置摄影机的位置和旋转,以确定视角的位置和朝向。通过修改这些参数,我们可以实现不同的视角,例如第一人称或第三人称视角。 其次,摄影机脚本还可以控制摄影机的运动和跟踪目标。通过设置目标对象,摄影机可以自动跟随目标的运动,实现类似于跟随镜头的效果。我们还可以设置摄影机的移动速度和旋转速度,使其更加平滑和自然地跟踪目标。 此外,摄影机脚本还可以通过修改摄影机的视野和遮罩来实现特殊效果。视野决定了摄影机的视野范围,我们可以通过修改这个参数来实现广角或者望远镜效果。遮罩可以用来限制摄影机的视野,例如创建遮挡物或者限制视野的边界。 最后,摄影机脚本还可以控制摄影机的触发事件和特殊效果。我们可以根据需要在游戏中的特定时刻触发摄影机的动作,例如切换视角、镜头抖动等等。这些特殊效果可以增加游戏的动态性和观赏性。 总之,Unity摄影机脚本是一种非常强大和灵活的工具,可以通过控制摄影机的位置、旋转、移动速度、视野等参数来实现各种视角和特殊效果。开发人员可以根据游戏的需要来自由调整摄影机的行为,实现更加丰富和引人入胜的游戏体验。 ### 回答2: Unity摄影机脚本是一种用于控制游戏中摄影机行为的脚本。在Unity中,摄影机脚本通常与摄影机对象关联,用于实现控制摄影机移动、旋转、缩放等行为。 摄影机脚本通过获取用户的输入或者场景中的事件来决定摄影机的运动行为。例如,可以通过鼠标移动来控制摄影机的旋转,通过键盘输入来控制摄影机的移动,或者通过触发器来控制摄影机的缩放。 在编写摄影机脚本时,可以使用Unity提供的API来实现不同的摄影机行为。比如,可以使用Transform组件的方法来实现摄影机的位置移动,使用Quaternion类的方法来实现摄影机的旋转,使用Camera组件的属性来控制摄影机的视野范围等。 除了基本的移动和旋转功能,摄影机脚本还可以实现一些额外的特殊效果。比如,可以实现摄影机的跟随功能,使得摄影机始终跟随着游戏对象的移动。还可以实现摄影机的镜头抖动效果,增加游戏的紧张感。可以根据游戏的需求,自定义不同的摄影机脚本,使得游戏画面更加生动和吸引人。 总之,Unity中的摄影机脚本是一种非常重要的工具,能够控制游戏中摄影机的运动行为,为游戏增加更多的交互性和视觉效果。 ### 回答3: Unity摄像机脚本是一种用于控制摄像机行为的编程脚本。在游戏开发中,摄像机经常用于控制玩家的视角和观察游戏场景。 使用Unity摄像机脚本,可以轻松实现许多常见的摄像机操作,如平移、旋转、缩放和聚焦。通过在Unity场景中添加摄像机并将脚本附加到摄像机上,可以使用脚本中定义的函数和变量来控制摄像机的位置、视角和移动速度等。 例如,可以使用摄像机脚本来实现第一人称视角,让玩家直接看到角色所处的视角。脚本可以根据角色的移动来动态调整摄像机的位置和角度,使其与角色保持一定的距离和角度,以实现流畅的视角跟随效果。 此外,摄像机脚本还可以用于实现漫游模式,让玩家可以自由探索整个游戏场景。通过监听玩家的输入,可以使用脚本控制摄像机的移动和旋转以及缩放,使玩家可以自由浏览整个场景,并且根据需要缩放摄像机的视野范围。 总之,Unity摄像机脚本是一种非常重要的工具,它可以帮助游戏开发者实现各种不同的摄像机行为和效果,为游戏提供更加丰富和生动的视觉体验。无论是实现第一人称视角还是漫游模式,摄像机脚本都是不可或缺的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值