6.Vector3向量加减乘除

6.3D数学-Vector3向量-向量加减乘除


6.1 知识点

主要学习内容

向量加法





Unity中的向量加法

  • 可以直接给对象位置加向量 移动物体 但是一般不会这么写 直接translate就行
    • 示例:this.transform.position += new Vector3(1, 2, 3);
    • 示例:this.transform.Translate(Vector3.forward * 5);

向量减法






Unity中的向量减法

  • 可以直接给对象位置减向量 移动物体 但是一般不会这么写 直接translate就行
    • 示例:this.transform.position -= new Vector3(1, 2, 3);
    • 示例:this.transform.Translate(-Vector3.forward * 5);

向量乘除


Unity中的向量乘除标量

  • 对于对象的本地缩放可以乘除修改
    • 示例:this.transform.localScale *= 2;
    • 示例:this.transform.localScale /= 2;
    • 注意:this.transform.lossyScale /= 2; // 全局缩放lossyScale只能读不能改

总结


6.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson06_3D数学_Vector3向量_向量加减乘除 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 Unity中的向量加法

        //可以直接给对象位置加向量 移动物体 但是一般不会这么写 直接translate就行
        this.transform.position += new Vector3(1, 2, 3);
        this.transform.Translate(Vector3.forward * 5);

        #endregion

        #region 知识点二 Unity中的向量减法

        //可以直接给对象位置减向量 移动物体 但是一般不会这么写 直接translate就行
        this.transform.position -= new Vector3(1, 2, 3);
        this.transform.Translate(-Vector3.forward * 5);

        #endregion

        #region 知识点三 Unity中的向量乘除标量

        //对于对象的本地缩放可以乘除修改
        this.transform.localScale *= 2;
        this.transform.localScale /= 2;
        //this.transform.lossyScale /= 2;//全局缩放lossyScale只能读不能改

        #endregion
    }
}

6.3 练习题

用向量相关知识,实现摄像机跟随

LateUpdate 里设置摄像机位置并看向目标:

public float zOffect = 4;
public float yOffect = 7;
public Transform target;

void LateUpdate()
{
    // 摄像机的位置等于目标的位置进行向量偏移
    // 先朝目标对象的面朝向的反方向平移4米再朝目标的头顶位置平移7米
    
    // 设置摄像机位置
    this.transform.position = target.position - target.forward * zOffect + target.up * yOffect;
    
    // 看向目标
    this.transform.LookAt(target);
}

LateUpdate 中更新摄像机的位置,使其始终在目标物体的后方4米、向上偏移7米的位置,并且朝向目标物体。


6.4 练习题代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//这个脚本将要挂载到摄像机上 实现摄像机跟随
public class Lesson06_练习题 : MonoBehaviour
{
    #region 练习题一
    //用向量相关知识,实现摄像机跟随(摄像机不设置为对象子物体),摄像机一直在物体的后方4米,向上偏7米的位置

    public float zOffect = 4;
    public float yOffect = 7;
    public Transform target;

    void LateUpdate()
    {
        //摄像机的位置 等于目标的位置 进行向量偏移
        //先朝目标对象的 面朝向的反方向平移4米 再朝目标的头顶位置 平移7米

        //设置摄像机位置
        this.transform.position = target.position + -target.forward * zOffect + target.up * yOffect;

        //看向目标
        this.transform.LookAt(target);
    }

    #endregion
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏