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在世界坐标中同步。