天天看点

U3D transform lookat旋转方法及Itween中Itweenpath的用法

private Vector3 temp;

    private void SetPosition(Transform cube1, Transform cube2, Transform cube3)//映像随飞机移动 指向敌机
    {
        temp = cube1.position - cube2.position;
        float length = Mathf.Sqrt(temp.x * temp.x + temp.y * temp.y + temp.z * temp.z);
        cube3.localScale = new Vector3(0.05f, 0.05f, length);
        cube3.position = cube1.position;
        cube3.LookAt(cube2);
    }
           

这行代码用于一个物体 产生映象然后指向另一个物体

主要在于lookAt的用法,cube3 指向 Cube2的方法;

Itween中Itweenpath的用法:

private int i = 1;

    public Vector3[] path;//Itweenpath 的坐标点存储的

    private void Awake()
    {
        path = iTweenPath.GetPath("One");//获取ItweenPath的坐标点
    }

    private void Begin()
    {
        Hashtable args = new Hashtable();
        if (i < path.Length)
        {


            Vector3 go = path[i] - path[i - 1];//获取itweenPath两点之间的向量差

            Vector3 v = Quaternion.FromToRotation(Vector3.right, path[i] - path[i - 1]).eulerAngles;//效果:跟SetFromToRotation差不多,区别是可以返回一个Quaternion。通常用来让transform的一个轴向(例如 y轴)与toDirection在世界坐标中同步。
            v.x = 0;
            v.y = 0;


            iTween.RotateTo(gameObject, iTween.Hash("rotation", v, "time", 1));//旋转游戏物体到指定的角度

            args.Add("speed", 0.1f);
            args.Add("position", path[i++]);//将path[i]赋值到position 中 ,在进行自加
            args.Add("easetype", iTween.EaseType.linear);
            args.Add("oncomplete", "Begin");//结束时再执行本函数
            args.Add("oncompletetarget", gameObject);//结束时的目标还为本物体
            iTween.MoveTo(gameObject, args);
        }
    }
           

通过ItweenPath画出物体移动路径 , itween得到路径的每一个点,通过不断调用函数本身,达到运动中,面向物体的点;

Vector3 v = Quaternion.FromToRotation(Vector3.right, path[i] - path[i - 1]).eulerAngles;/
           

这行代码第一个通常用来让transform的一个轴向(例如 y轴)与toDirection在世界坐标中同步。

继续阅读