我如何将其制作成光滑的相机? (统一C#编程)

时间:2018-08-12 19:57:52

标签: c# unity3d

这就是我所得到的,为什么当我在上面进行了很好的说明后,为什么要让我在网站上做更多的解释?我想实现平滑的摄像机控制,如果鼠标位于中间,则播放器位于摄像机的中间,但是当它朝一个方向移动时,我希望相机稍微移动一下以显示地形(这里有两个问题: 1.如果鼠标位于屏幕的0,0点,并且我希望它成为相机的中心,则相机不会移动 2.相机朝那个方向漂移,它不会像我想要的那样停下来):

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

public class CameraController : MonoBehaviour {

   // Camera cam = Camera.main.orthographicSize;
    //Vector2 camcenter = new Vector2(cam * 2, camheight);

    public GameObject mage;
    private Vector3 offset;
    public float mincam = 30f;
    public float maxcam = 120f;
    public bool mouse_smooth_cam = false;

    // Update is called once per frame
    void LateUpdate ()
    {
        offset = Input.mousePosition / 100 + transform.position - mage.transform.position;
        transform.position = mage.transform.position + offset;
    }

    void Update()
    {
        HandleZoom();
    }

    private void HandleZoom()
    {
        float scrollValue = Input.mouseScrollDelta.y;

        float newCamSize = Camera.main.orthographicSize - scrollValue*4;
        Camera.main.orthographicSize = Mathf.Clamp(newCamSize, mincam, maxcam);
    }
}

1 个答案:

答案 0 :(得分:2)

使用Input.mousePosition / 100代替Camera.main.ScreenToWorldPoint(Input.mousePosition)

还始终在更新方法中使用Time.deltaTime

var PAN_SPEED = 30f;
var mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
offset = mousePos + transform.position - mage.transform.position;
transform.position = mage.transform.position + offset * Time.deltaTime * PAN_SPEED;