Unity ScriptingAPI Vector3学习

原创 2015年07月08日 01:41:11

链接:http://docs.unity3d.com/ScriptReference/Vector3.html

Vector3

struct in UnityEngine

描述

Representation of 3D vectors and points.
表示3D向量或点。

This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doing common vector operations.
此结构用来贯穿整个Unity3D位置和方向的转换。也包括一般向量操作方法。

Besides the functions listed below, other classes can be used to manipulate vectors and points as well. For example the Quaternion and the Matrix4x4 classes are useful for rotating or transforming vectors and points.
除了以下列出的方法,其他类也有操作向量和位置的方法。例如Quaternion和Matrix4x4……

静态变量

  • back 代表(0,0,-1)
  • down 代表(0,-1,0)
  • forward 代表(0,0,1)
  • left 代表(-1,0,0)
  • one 代表(1,1,1)单位向量
  • right 代表(1,0,0)
  • up 代表(0,1,0)
  • zero 代表(0,0,0)
    这里写图片描述

普通变量

  • magnitude 返回向量的长度(模),只读
  • normalized 返回该向量对应的单位向量, 不是one,只读
  • sqrManitude 返回长度的平方,只读
  • this[int] 下标[0][1][2]代表x,y,z
  • x
  • y
  • z

构造函数

public Vector3(float x, float y, float z);

普通方法

public void Set(float new_x, float new_y, float new_z);

Set函数

public string ToString();
public string ToString(string format);

返回向量对应的格式化字符串

操作符

operator - 向量相减
operator != 向量判等,返回bool
operator * 数乘
operator / 数除
operator + 向量相加
operator == 向量判等,返回bool

静态方法(常用)

public static float Angle(Vector3 from, Vector3 to);

返回两向量间角度,不是弧度,数值不超过180。

public static Vector3 ClampMagnitude(Vector3 vector, float maxLength);

限制向量vector长度为maxLength,若vector.magnitude > maxLegth, 返回值叫vector缩小

public static float Distance(Vector3 a, Vector3 b);

Distance函数返回向量的距离,为(a-b).magnitude

public static float Dot(Vector3 lhs, Vector3 rhs);

两向量点乘,为(|a| * |b| * cos(angle))

public static Vector3 Lerp(Vector3 from, Vector3 to, float t);

线性插值两个向量,t=0,返回from,t=1,返回to,一般采用Vector3.Lerp(startPoint, endPoint, Time.deltaTime * xx)实现平滑移动

public static Vector3 Max(Vector3 lhs, Vector3 rhs);
public static Vector3 Min(Vector3 lhs, Vector3 rhs);

返回两向量x,y,z对应坐标的最大或者最小值

public static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);

current向 target移动,maxDistanceDelta为每秒的距离

public void Normalize();

取单位向量。

public static Vector3 Project(Vector3 vector, Vector3 onNormal);

将vector投影到onNormal上。
这里写图片描述

public static void OrthoNormalize(ref Vector3 normal, ref Vector3 tangent);

取normal的单位向量,然后取tangent的单位向量,并与normal正交。

public static void OrthoNormalize(ref Vector3 normal, ref Vector3 tangent, ref Vector3 binormal);

去normal的单位向量,然后去tangent的单位向量,并与normal正交;去binormal单位向量,并与normal和tangent分别正交。

public static Vector3 ProjectOnPlane(Vector3 vector, Vector3 planeNormal);

投影vector到以planeNormal为法向量的平面上。

public static Vector3 Reflect(Vector3 inDirection, Vector3 inNormal);

反射indirection,以inNormal为法向量的平面为反射面。
这里写图片描述

public static Vector3 RotateTowards(Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta);

与MoveTowards不同之处在于这里current代表的是方向而非点。

public static Vector3 Scale(Vector3 a, Vector3 b);

(1,2,3)*(2,3,4) = (2,6,12)

public static Vector3 Slerp(Vector3 from, Vector3 to, float t);

球面插值

public static Vector3 SmoothDamp(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

平滑阻尼,向量由一些像弹簧阻尼器函数平滑,这将永远不会超过。最常见的用途是平滑跟随相机,例如下:

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Transform target;
    public float smoothTime = 0.3F;
    private Vector3 velocity = Vector3.zero;
    void Update() {
        Vector3 targetPosition = target.TransformPoint(new Vector3(0, 5, -10));
        transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Vector3

1.Transform.forward: 返回类型为Vector3,总与物体的正前方方向保持一致。

Vector3.Dot 与Vector3.Cross

Vector3.Dot(点积) : 点积的计算方式为:  a·b=|a|·|b|cos; 其中和 夹角不分顺序; 物理学中点积用来计算力沿物体运动的方向所做的功:W=F*S=|F|*|S|*cosθ...
  • cxihu
  • cxihu
  • 2015年07月10日 17:32
  • 1764

C++实现一个Vector3空间向量类

Vector2,3,4类在DirectX中都有现成的可以调用,不过要实现其中的功能其实也不难,也都是一些简单的数学知识罢了。 本文用C++实现一个简单的Vector3类的功能,暂时有的功能是: 1 +...

<Unity3D>浅谈Vector3的点积与叉积

一、点积(又称“数量积”、“内积”)  1、理论知识 在数学中,点积的定义为a·b=|a|·|b|cosa,b> 【注:粗体小写字母表示向量,a,b>表示向量a,b的夹角,取值范围为[0,π]...

我的游戏开发笔记(五):Animator的运用二

好了好了,上篇说到如何用代码来控制Animator里的条件参数,话不多说,直接开始。 Animator m_Animator;m_Animator = GetComponent(); m_Anima...

Unity基础包 FirstPersonController 脚本研究

版本:unity 5.3.4  语言:C#   我不想一开始就去研究Shader或者人工智能算法什么的,功能都做不出来,研究这些高级也没有什么用。   所以从最基础的脚本开始。   我现在...

UNITY 5.2 Vector3 结构

Static变量:特殊向量的缩写,只读 public static Vector3 back { get; } 说明:Vector3(0, 0, -1) 缩写 public static V...

Unity 脚本学习总结

1.创建代码对应的基类:public class MyObjClass : MonoBehaviour2.创建枚举:public enum Direction { DirectX, ...
  • zszeng
  • zszeng
  • 2015年06月28日 15:56
  • 1341

[Unity基础]arpg中的攻击判定

总结一下,大致有三种: 1.角度 + 距离 2.碰撞器(略) 3.Physics类(略) 如果是在播放攻击动画时进行判定,还可以使用动画事件 先说一下向量相关的: using Un...
  • lyh916
  • lyh916
  • 2015年03月29日 16:38
  • 2504

Unity3d之Vector3 学习与应用

今天的目标是Vector3 和部分 Transform。先说Vector3。 首先是Vector3的中英文API Struct Representation of 3D vectors ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity ScriptingAPI Vector3学习
举报原因:
原因补充:

(最多只允许输入30个字)