Unity初级相机跟随

Unity初级相机跟随

已经接触unity一个多月了,在刚开始学习unity的时候曾在优酷上看到一位业内大佬的讲座,当然那时候听的也是云里雾里,但是其一开始讲述如何学习unity...或许可以说是学习一门任何语言吧,他的观点我觉的还蛮有道理的。他说当我们在开发一个项目的时候不要仅仅只是为了完成任务而去完成任务,不因该只注意速度而忽视性能优化上的问题,我们写的代码应当是可以收藏的,可以继承的,当用在其他项目上时最好也可以胜任。现在我理解的意思也不知道是不是他想要表达的意思,先就这么做吧:D,回头再来看看这些也挺有意思的不是吗?

平面跟随相机

	思想:镜头跟随人物一道移动,使其一直保持再人物的正背后,视角朝向与人物相同。
public class FlowerCamera : MonoBehaviour {

    public Transform flowerObject;//被跟随对象
    public float distanceZ;//相机再Z轴与被跟随对象的距离
    public float distanceY;//相机再Y轴与被跟随对象的距离

    private float positionX;//确定相机X位置
    private float positionY;//确定相机Y位置
    private float positionZ;//确定相机Z位置

    public enum cameraModeEnum{
        Null,
        正后方视角,
        其他方式
    }
    public cameraModeEnum cameraMode = cameraModeEnum.Null;

    private void Start()
    {
        transform.position = new Vector3(flowerObject.position.x, flowerObject.position.y + distanceY, flowerObject.position.z - distanceZ);
        transform.Rotate(flowerObject.eulerAngles);
    }

    private void Update()
    {
        if(cameraMode==cameraModeEnum.正后方视角)
        {
            CameraFollower1();
        }
        else
        {
            Debug.Log("未匹配视角模式"+ cameraMode);
        }
        
    }

    //相机一直处于被跟随对象视角的正后方
    void CameraFollower1()
    {
        //第一步,先把相机z轴的方向与被跟随对象Z轴方向一致
        transform.eulerAngles=new Vector3(flowerObject.eulerAngles.x, flowerObject.eulerAngles.y,flowerObject.eulerAngles.z);
        //再通过被跟随对象的位置计算相机的位置
        positionY = flowerObject.position.y + distanceY;
        positionX = flowerObject.position.x - Mathf.Sin(flowerObject.eulerAngles.y * Mathf.PI/180) * distanceZ;
        positionZ = flowerObject.position.z - Mathf.Cos(flowerObject.eulerAngles.y *Mathf.PI/180) * distanceZ;
        transform.position=new Vector3(positionX, positionY, positionZ);
    }
}

在这里插入图片描述
圆圈位置为人物位置,相机位置变换如图形X所示。上述代码即使通过此图实现得到的。

其他相机方法

用到了再加啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值