1. Random.insideUnitSphere

返回半径为1的球体内的一个随机点。(只读)
transform.position = Random.insideUnitSphere * 5; //设置位置到半径为5的球体内的某个地方,并且中心为0

2. Vector3

Vector3.forward(最常用,沿着Z轴)Shorthand for writing Vector3(0, 0, 1)
Vector3.right Shorthand for writing Vector3(1, 0, 0).
Vector3.up Shorthand for writing Vector3(0, 1, 0).

zero Shorthand for writing Vector3(0, 0, 0).
one Shorthand for writing Vector3(1, 1, 1).

 

magnitude (Read Only)

返回向量的长度(只读)。返回向量的长度,也就是点P(x,y,z)到原点(0,0,0)的距离。 最常用的是用来返回物体的移动速度
speed=rigidbody.velocity.magnitude;
另一个应用,用于射线中确定distance。

float distance = direction.magnitude;
if (distance > 0)
{
  RaycastHit[] hits = Physics.RaycastAll(oldPos, direction, distance);
}

normalized

返回向量的长度为1(只读)。

向量的归一化。

sqrMagnitude
返回这个向量的长度的平方(只读)。
如果只是比较两个向量的长度,可以简单的用Vector3.sqrMagnitude进行大小比较,会快很多
if(v.sqrMagnitude>range*range){//do sth...}

Lerp

Linearly interpolates between two vectors.
两个向量之间的线性插值。

从老位置到新位置的缓动,可实现镜头的跟随,光效减弱,等效果

Vector3.Lerp(transform.position,newPos,Time.deltaTime);

Vector3.Angle 角度
static function Angle (from : Vector3, to : Vector3) : float
由from和to两者返回一个角度。形象的说,from和to的连线和它们一个指定轴向的夹角。

Vector3.ClampMagnitude 限制长度

static function ClampMagnitude (vector : Vector3, maxLength : float) : Vector3
abc=Vector3(0,10,0);
abc=Vector3.ClampMagnitude(abc, 2);
//abc返回的是Vector3(0,2,0)

Vector3.Slerp 球形插值

static function Slerp (from : Vector3, to : Vector3, t : float) : Vector3
Spherically interpolates between two vectors.
两个向量之间的弧形插值
我感觉叫“弧线插值”更直观一些。

Vector3.Project

 

 

 

Transform.eulerAngles  物体沿某个轴旋转

public float yRotation = 5.0F;

    void Update() {

        yRotation += Input.GetAxis("Horizontal");

        transform.eulerAngles = new Vector3(10, yRotation, 0);

    }

Quaternion.identity


同一性旋转(只读)。该四元数,相当于"无旋转":这个物体完全对齐于世界或父轴。
将物体绕y轴顺时针转30°
public Quaternion rotation = Quaternion.identity;  
void Start()  
{  
rotation.eulerAngles = new Vector3(0, 30, 0);  
transform.rotation = rotation;  
print(rotation.eulerAngles.y);  

Quaternion.AngleAxis 

static function AngleAxis (angle : float, axis : Vector3) : Quaternion 
 transform.rotation = Quaternion.AngleAxis(30, Vector3.up);  
效果:将物体绕axis旋转angle度。

Quaternion.Angle 

static function Angle (a : Quaternion, b : Quaternion) :float

float angle = Quaternion.Angle(transform.rotation, target.rotation);  

 效果:返回ab两者之间的角度。

镜头平滑跟随

 

using UnityEngine;
using System.Collections;

public class ExampleClass : 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);
    }
}

 

posted on 2016-05-31 16:51  水榭阁主  阅读(452)  评论(0)    收藏  举报