新的一天旧的开始

失踪人口回归,自从上一次记录完了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
加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值