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