3D 数学(三角函数、坐标系、向量、摄像机跟随、点乘)

目录

1、三角函数

2、坐标系

3、向量

 4、摄像机跟随

5、点乘


 

 

1、三角函数

角度制:Deg

弧度制:Rad               

弧度定义 :  %20r%20%7D     gif.latex?%7B%5Ccolor%7BDarkBlue%7D%20l%7D 为弧长,gif.latex?%7B%5Ccolor%7BDarkBlue%7D%20r%7D 为半径 , gif.latex?%7B%5Ccolor%7BDarkBlue%7D%20%5Ctheta%20%7D 为角度

public class DegAndRadTest : MonoBehaviour
{
    void Start()
    {
        //角度转成弧度
        float x = Mathf.Deg2Rad * 180;
        Debug.Log("x: " + x);// π 即 3.141593

        //弧度转成角度
        float y = Mathf.Rad2Deg * 3.14f;
        Debug.Log("y: " + y);// 180°即 179.9088

        float z = Mathf.Sin(30 * Mathf.Deg2Rad);
        Debug.Log("z: " + z);// 30 * Mathf.Deg2Rad表示30°,即 0.5

    }
}

f28795b3e4f141c6bc09443261e35d27.png

2、坐标系

  1. transform.position += transform.forward   等于是物体自身坐标系的 z 轴前进(看的还是世界坐标)
  2. transform.Translate(Vector3.forward, Space.Self) 等于是物体自身坐标系的 z 轴前进
  3. transform.Translate(transform.forward, Space.World)  等于是让物体沿着物体自身坐标 z 轴在世界坐标上的方向上前进    (1,2,3  效果一样)
  4. transform.position += Vector3.forward   等于是在世界坐标的 z 轴前进
  5. transform.Translate(Vector3.forward, Space.World) 等于是让物体沿着世界坐标轴的z 轴前进
  6. transform.Translate(transform.forward, Space.Self) (如果写在start里的时候,如下:be8bb335edbb41b68c58694610885167.png(原位置)9ebad4108ff24d3c924bc8800b4d4ba1.png(运行后)

3、向量

向量是终点位置减起始位置;向量是没有位置的,可以平移;

向量加法:a(x,y,z)  b(a,b,c) ;       a + b = (x+a,y+b,z+c)

向量减法:a(x,y,z)  b(a,b,c) ;        a - b = (x - a,y-b,z - c)

向量的减法的几何方向理解:将两个向量的起点移到同一点,连接两个向量的终点,方向为减向量(b)指向被减向量(a)

974382e2d8c5422fbea5471dedf462ed.jpeg

 4、摄像机跟随

public class CameraFollow : MonoBehaviour
{
    public GameObject target;
    public float forward;
    public float height;//摄像机的高度
    public float speed;
    private void LateUpdate()
    {
        //跟主角位置偏差       后方位置                        上方位置
        Vector3 v = (-target.transform.forward * forward) + new Vector3(0, height, 0);
        //一直在主角的后方
        Vector3 pos = v + target.transform.position;
        //用差值移动方式运动到固定位置
        transform.position = Vector3.Lerp(transform.position, pos, speed);
        transform.LookAt(target.transform);//摄像机看向target
    }
}

fd73968eb3214d07ac87e453db18f154.jpeg

5、点乘

87585bf6eb7041e0a00e2bd2d6659ee8.jpeg

 6897fb869fd34ea7acb39501508459f1.png

 0a4b0552d36c427e86afef752fb679a8.png

 gif.latex?%7B%5Ccolor%7BBlue%7D%20%5Ctheta%20%7D小于90°时为正, gif.latex?%7B%5Ccolor%7BBlue%7D%20%5Ctheta%20%7D大于90°时为负

public class DotProduct : MonoBehaviour
{
    public GameObject cube;
    public GameObject sphere;
    void Update()
    {
        float w = Vector3.Dot(cube.transform.forward, sphere.transform.position - cube.transform.position);

        Debug.DrawLine(cube.transform.position, cube.transform.forward * 10, Color.red);
        Debug.DrawLine(cube.transform.position, sphere.transform.position, Color.blue);

        Debug.Log("w: " + w);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ོꦿ映ꦿ言᭄﹆ོོོ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值