当前位置:网站首页>Unity让摄像机一直跟随在玩家后上方

Unity让摄像机一直跟随在玩家后上方

2022-07-06 23:35:00 iiiiiiimp

Unity让摄像机一直跟随在玩家后上方

写在前面

有一个需求,让摄像机一直跟随在玩家后上方,并且随玩家的旋转而旋转。

相机跟随效果

在这里插入图片描述
原理讲解
1、用摄像机的坐标将去玩家的坐标就能得到摄像机相对于玩家向上和向后的距离
在这里插入图片描述
对应代码

camera2PlayerDir = this.transform.position-playerTransform.position;
playerUp = camera2PlayerDir.y;
playerBack= camera2PlayerDir.z;

2、用玩家移动后的位置+摄像机相对于玩家向上的距离×Vector3.up+摄像机相对于玩家向后的距离×playerTransform.forward(玩家当前的朝向)就能得到摄像机要移动到的位置
在这里插入图片描述
对应代码

targetPosition = playerTransform.position + Vector3.up * playerUp + playerTransform.forward * playerBack;

3、使用Vector3.Lerp让摄像机移动更加平衡。摄像机旋转的度数就是玩家旋转的度数。

随机生成敌人效果

在这里插入图片描述
原理讲解
为了让生成的敌人不会重叠,即生成在同一个地方导致两个坦克碰撞到一起,需要用到Physics.CheckSphere这个函数。
首先将地图边界和地面的Layer设置Plane
在这里插入图片描述
然后在代码中使用LayerMask layerMask = ~LayerMask.GetMask("Plane");让射线不检测Plane这个层级的物体

LayerMask layerMask = ~LayerMask.GetMask("Plane");//等价于~(1<<6)
do {
    
    randomX = Random.Range(-createX, createX);
    randomY = Random.Range(-createY, createY);
} while (Physics.CheckSphere(new Vector3(randomX,0,randomY),createRadius,layerMask));

写在后面

学Unity数学真的很重要!!!!

原网站

版权声明
本文为[iiiiiiimp]所创,转载请带上原文链接,感谢
https://blog.csdn.net/iiiiiiimp/article/details/125588752