• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

unity3d简单的相机跟随及视野旋转缩放

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1224/264.html

常州手游开发运营-unity3d简单的相机跟随及视野旋转缩放

1、实现相机跟随主角运动

  一种简单的方法是把Camera直接拖到Player下面作为Player的子物体,另一种方法是取得Camera与Player的偏移向量,并据此设置Camera位置,便能实现简单的相机跟随了。

  这里我们选取第二种方法,首先给Camera添加一个脚本,取名为FollowPlayer,脚本很简单不做说明了 
 

public class FollowPlayer : MonoBehaviour {
 
        private Transform player;
        private Vector3 offsetPosition;
 
    // Use this for initialization
    void Start () {
        player = GameObject.FindGameObjectWithTag(“Player”).transform;
        offsetPosition = transform.position - player.position;
        transform.LookAt(player.position);
    }
    
    // Update is called once per frame
    void Update () {
        transform.position = offsetPosition + player.position;
 
    }

2、视野的缩放

  鼠标滚轮向前拉近视野,向后视野变远。常州微信小程序开发-幻天网络分析原理是设置一个变量distance为偏移向量的模,鼠标滚轮滑动改变distance的值,然后根据distance设置Camera的位置

  其中scrollSpeed为定义的一个float变量用于调整缩放的速度

private float distance;
 
private void ScrollView()
    {
        distance = offsetPosition.magnitude;
        //向前滑动拉近 向后滑动拉远
        distance -= Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;
        distance = Mathf.Clamp(distance, MinDistance, MaxDistance);
        offsetPosition = offsetPosition.normalized * distance;
    }
 
//然后在Update里面调用ScrollView方法

3、视野旋转

  采用transform.RotateAround方法,让Camera根据Player的位置旋转
 

private void RotateView()
    {
        //鼠标右键按下可以旋转视野
        if (Input.GetMouseButtonDown(1))
            isRotating = true;
        if (Input.GetMouseButtonUp(1))
            isRotating = false;
 
        if (isRotating)
        {
            Vector3 originalPosition = transform.position;
            Quaternion originalRotation = transform.rotation;
            transform.RotateAround(player.position, player.up, rotateSpeed * Input.GetAxis("Mouse X"));
            transform.RotateAround(player.position, transform.right, -rotateSpeed * Input.GetAxis("Mouse Y"));
            float x = transform.eulerAngles.x;
            //常州微信公众平台旋转的范围为10度到80度
            if (x < 10 || x > 80)
            {
                transform.position = originalPosition;
                transform.rotation = originalRotation;
            }
            
        }
 
        offsetPosition = transform.position - player.position;
    }


上篇:上一篇:常州网游开发-NGUI简单背包系统的实现
下篇:下一篇:常州手机游戏开发-在二叉树中找路径