当前位置:网站首页>Unity让摄像机一直跟随在玩家后上方
Unity让摄像机一直跟随在玩家后上方
2022-07-06 23:35:00 【iiiiiiimp】
写在前面
有一个需求,让摄像机一直跟随在玩家后上方,并且随玩家的旋转而旋转。
相机跟随效果
原理讲解
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数学真的很重要!!!!
边栏推荐
猜你喜欢
Auto.js 获取手机所有app名字
[question] Compilation Principle
[JS component] date display.
[opencv] image morphological operation opencv marks the positions of different connected domains
pytest测试框架——数据驱动
1.AVL树:左右旋-bite
JHOK-ZBG2漏电继电器
Make web content editable
【问道】编译原理
If you‘re running pod install manually, make sure flutter pub get is executed first.
随机推荐
2039: [蓝桥杯2022初赛] 李白打酒加强版 (动态规划)
创始人负债10亿,开课吧即将“下课”?
MySQL数据库学习(8) -- mysql 内容补充
《4》 Form
JVM(十九) -- 字节码与类的加载(四) -- 再谈类的加载器
Mysql database learning (8) -- MySQL content supplement
2039: [Bluebridge cup 2022 preliminaries] Li Bai's enhanced version (dynamic planning)
高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
Life experience of an update statement
Timer create timer
Initial experience of annotation
If you want to choose some departments to give priority to OKR, how should you choose pilot departments?
Harmonyos fourth training
利用OPNET进行网络任意源组播(ASM)仿真的设计、配置及注意点
U++ metadata specifier learning notes
Torch optimizer small parsing
漏电继电器JELR-250FG
Longest palindrome substring (dynamic programming)
LabVIEW is opening a new reference, indicating that the memory is full
[QT] custom control loading