失踪人口回归,自从上一次记录完了C#语言之后,我忙着生活忙着学习甚至都不写博客了,但是我转念一想不能再这么堕落下去了,我要改变。
那么就从今天开始记录回归之后学习的Unity的各种API方法。
今天就记录一下Unity 里的TransformAPI吧。
public enum State
{
Null,
Right,
Left,
Origin,
}
public class TransformAPI : MonoBehaviour
{
public Transform capsule;
//哥布林
public Transform gbl;
//剑圣
public Transform js;
void Start()
{
//Transform 属性
//位置 position(世界坐标)
// this.transform.position = new Vector3(1, 1, 1);
//旋转 rotation
//设置欧拉角
//transform.eulerAngles = new Vector(0,180,0)
//this.transform.rotation = Quaternion.Euler(new Vector3(0, 180, 0));
//缩放 scale
//this.transform.localScale = new Vector3(10, 10, 10);
//自身位置(相对坐标)
//this.transform.localPosition = new Vector3(1,1,1);
//自身旋转
//this.transform.localRotation = Quaternion.Euler(new Vector3(0, 30, 0));
//Find 查找子物体 只能查找一层
//Transform tf = transform.Find("mon_orcWrrior");
//通过路径查找子物体
//Transform tf = js.Find("root/spine/spine_b");
//print(tf.name);
//根据GetChild方法来获取子物体
//Transform tf = transform.GetChild(0).GetChild(1).GetChild(0).GetChild(1).GetChild(0);
//print(tf.name);
//childCount 子物体的数量
//获取父物体
//print(transform.parent.parent.parent.name);
//capsule.parent = this.transform;
// 设置父物体 transform.SetParent(父物体的Transform)
//获取根物体
//print(transform.root.name);
//向上
//print(-transform.up*5);
//向右
//print(-transform.right*3);
//向前
//print(transform.forward*10);
//方法
//判断当前物体是否是另一物体的子物体 isChildOf()
//print(capsule.IsChildOf(gbl));
//使用代码将 哥布林 移动到 距离世界坐标原点X轴 4米,Y轴5米,Z轴0米的位置
//绕Y轴旋转90度
//通过GetChild方法查找到子物体wphand
//创建一个胶囊体,将wphand设置为胶囊体的父物体
//gbl.position = new Vector3(4, 5, 0);
//gbl.rotation = Quaternion.Euler(0, 90, 0);
//Transform wphand = gbl.GetChild(0).GetChild(1).GetChild(0).GetChild(2).GetChild(0).GetChild(0).GetChild(2).GetChild(0).GetChild(0).GetChild(0).GetChild(2).GetChild(1);
//第一种
//capsule.parent = wphand;
//第二种
//capsule.SetParent(wphand);
//将自身坐标 设置为0 与父物体重合
//capsule.localPosition = new Vector3(0, 0, 0);
//①将阿卡丽z轴设定为距离世界坐标10米的位置(0,0,10),运行游戏后,
//②阿卡丽将向前移动,
//③2秒后,阿卡丽右转,继续向自身前方移动,
//④3秒后,阿卡丽左转,继续向自身前方移动,
//⑤前行2秒后,回到传送到初始的位置,然后绕剑圣旋转
//①
transform.position = new Vector3(0, 0, 10);
}
public float speed = 5;
//计时器
public float time = 0;
private bool alreadyRight = false;
private bool alreadyLeft = false;
private bool isOrigin = false;
private State state = State.Null;
void Update()
{
//看向某一个目标 可看向一个transform 也可看向一个position
//this.transform.LookAt(gbl.position);
//移动
//transform.Translate(-transform.forward * speed * Time.deltaTime);
//transform.eulerAngles = new Vector3(0, 180, 0);
//transform.Translate(new Vector3(0, 1, -1) * speed * Time.deltaTime);
//旋转
//transform.Rotate(transform.up*speed);
//围绕某个点转动RotateAround(被围绕者的位置,围绕的轴,旋转的角度)
//transform.RotateAround(js.position, transform.up, 2);
////剑圣围绕哥布林转
//js.RotateAround(gbl.position, gbl.up, 10 * Time.deltaTime);
//js.LookAt(gbl);
////阿卡丽围绕剑圣转
//transform.RotateAround(js.position, js.up, 80 * Time.deltaTime);
//transform.LookAt(js);
////哥布林自转
//gbl.Rotate(gbl.up, 20 * Time.deltaTime);
//②计时
time += Time.deltaTime;
//阿卡丽向自身前方移动
#region 方法一
////③2秒后,阿卡丽右转
//if (time > 2 && alreadyRight == false)
//{
// transform.Rotate(0, 90, 0);
// time = 0;
// //已经右转了
// alreadyRight = true;
//}
////④3秒后,阿卡丽左转
//else if (time > 3 && alreadyLeft == false)
//{
// transform.Rotate(0, -90, 0);
// time = 0;
// alreadyLeft = true;
//}
////⑤前行2秒后,回到传送到初始的位置
//else if (time > 2 && alreadyLeft == true&&isOrigin==false)
//{
// transform.position = new Vector3(0, 0, 10);
// //回到起点
// isOrigin = true;
//}
////然后绕剑圣旋转
//else if (isOrigin)
//{
// transform.RotateAround(js.position, js.up, 10);
//}
#endregion
if (state != State.Origin)
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
//③2秒后,阿卡丽右转
if (time > 2 && state == State.Null)
{
transform.Rotate(0, 90, 0);
time = 0;
//标记已经右转
state = State.Right;
}
//④3秒后,阿卡丽左转
else if (time > 3 && state == State.Right)
{
transform.Rotate(0, -90, 0);
time = 0;
//标记已经左转
state = State.Left;
}
//⑤前行2秒后,回到传送到初始的位置
else if (time > 2 && state == State.Left)
{
transform.position = new Vector3(0, 0, 10);
//标记到原点状态
state = State.Origin;
}
else if (state == State.Origin)
{
//绕剑圣旋转
transform.RotateAround(js.position, js.up, 10);
}
}
}
这里面会有部分的汉字注释,人物名称都是我们上课学习的目标。
2019.6.3
加油。