游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   碎碎

Cinemachine切换相机,跟随物体运动

个人分类: C#程序代码 | 2018-9-11 14:49
标签:Cinemachine

[code]csharpcode:

/*
* * @ Creat Time--2018/9/11
* * @ Project--虚拟相机切换,跟随物体运动
* * @ Author--鼠标左键按一次,换一个
* * @ Discibe--没必要设置物体位置,不影响
*/
using UnityEngine;

public class SwithCamera : MonoBehaviour
{
    //相机视角---前后左右,顶部
    public GameObject cameraBack, cameraRight, cameraLeft, cameraForward, cameraTop;
    public Transform Target;//目标对象
    int n = 0;
    bool isTrue = false;
    private void Awake()
    {
        cameraBack.SetActive(false);
        cameraBack.SetActive(true);
    }
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            n++;
            if(n > 5)  {  n = 1; }
            else  { isTrue = true; }
        }
        if(isTrue)
        {
            SwithOfCam(n);
        }
    }
    //显示相机
    public void ChangeCamera(GameObject camera)
    {
        camera.SetActive(false);
        camera.SetActive(true);

    }
    /// <summary>
    /// 更新相机
    /// </summary>
    /// <param name="camera">相机</param>
    /// <param name="camPos">相机照射物体的位置</param>
    /// <param name="angle">相机旋转角度</param>
    public void ChangeCamera(GameObject camera, Vector3 camPos, Vector3 angle)
    {
         Vector3 position = Target.position + camPos;
        camera.transform.position = Vector3.Lerp(camera.transform.position, position, 10 * Time.deltaTime);
        
        camera.transform.Rotate(angle);

        camera.SetActive(false);
        camera.SetActive(true);

    }
    public void SwithOfCam(int n)
    {
        switch(n)
        {
            case 1:
                // ChangeCamera(cameraBack,new Vector3(0,0,-5),new Vector3(0,0,0));//后,跟随 
                ChangeCamera(cameraBack);
                break;
            case 2:
                ChangeCamera(cameraRight, new Vector3(5, 0, 0), new Vector3(0, -90, 0));//右
                break;
            case 3:
                ChangeCamera(cameraLeft, new Vector3(-5, 0, 0), new Vector3(0, 90, 0));//左
                break;
            case 4:
                ChangeCamera(cameraForward, new Vector3(0, 0, 5), new Vector3(0, 180, 0));//前
                break;
            case 5:
                ChangeCamera(cameraTop, new Vector3(0, 2.5f, 0), new Vector3(90, 0, 0));//上帝视角
                break;
        }
    }
}
初始状态为后视角跟随相机,只有这个相机的CinemachineVirtualCamera组件下的Follow添加了目标物体,为让相机平滑切换,将需要拉取的相机的Aim设置为Composer。
0 0

作者的其他最新博客

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

关闭

站长推荐 上一条 /1 下一条

返回顶部