SIKI学习——UnityAPI常用方法和类详解0106

一、屏幕坐标系和鼠标的坐标

public class API11Input : MonoBehaviour
{
    public Transform cube;
 void Update ()
    {
        //getkeyXXX的使用
        //if (Input.GetKeyDown(KeyCode.Space))
        //{
        //    //当我们按下的那一帧返回true,只执行一次
        //    print("GetKeyDown");
        //}
        //if (Input.GetKeyUp(KeyCode.Space))
        //{
        //    print("GetKeyUp");
        //}
        //if (Input.GetKey(KeyCode.Space))
        //{
        //    print("GetKey");
        //}
        //if (Input.GetKeyDown("left shift"))
        //{
        //    print("left shift");//名字容易出错,各有优劣
        //}
        //鼠标按键事件的监测
        //if (Input.GetMouseButton(0))
        //{
        //    Debug.Log("Pressed left Click");
        //}
        //if (Input.GetMouseButton(1))
        //{
        //    Debug.Log("Pressed right Click");
        //}
        //if (Input.GetMouseButton(2))
        //{
        //    Debug.Log("Pressed middle Click");
        //}
        //if (Input.GetMouseButtonDown(0))//只执行一次
        //{
        //    Debug.Log("Pressed left Click");
        //}
        //if (Input.GetMouseButtonDown(1))//只执行一次
        //{
        //    Debug.Log("Pressed right Click");
        //}
        //if (Input.GetMouseButtonDown(2))//只执行一次
        //{
        //    Debug.Log("Pressed middle Click");
        //}
        //GetButtonXXX相关事件监测
        //if (Input.GetButtonDown("Fire1"))
        //{
        //    print("Fire1 Down");
        //}
        //if(Input.GetButtonDown("Horizontal"))
        //{
        //    print("Horizontal Down");
        //}
        //使用GetAxis的到轴的值来控制移动
        //print(Input.GetAxis("Horizontal"));
        //cube.Translate(Vector3.right*Time.deltaTime* Input.GetAxis("Horizontal")*5);//由0渐变到1有一个渐变效果(自己会运动 每秒运行一米)
        //cube.Translate(Vector3.right*Time.deltaTime* Input.GetAxisRaw("Horizontal")*5);//直接从0变到1


        //屏幕坐标系和鼠标的坐标
        //if (Input.anyKeyDown)
        //{
        //    print("any Key Down");//鼠标键盘都会触发
        //}
        print(Input.mousePosition);//获取鼠标在屏幕坐标,以屏幕左下角为原点,以像素为单位
    }
}

二、Vector2中的变量有哪些

Vector2表示二维向量和坐标

public class API12Vector2 : MonoBehaviour
{
 void Start ()
    {
        print(Vector2.down);
        print(Vector2.up);
        print(Vector2.left);
        print(Vector2.right);
        print(Vector2.one);
        print(Vector2.zero);
        Vector2 a = new Vector2(2,2);
        Vector2 b = new Vector2(3,4);
        print(a.magnitude);//2倍根号2a向量的长度的值(开过根号的)
        print(a.sqrMagnitude);//8没开根号的
        print(b.magnitude);//5
        print(b.sqrMagnitude);//25
        print(a.normalized);//返回a单位化之后的向量,对向量本身不产生影响
        print(b.normalized);
        print(a.x+","+a.y);//访问向量的值
        print(a[0]+","+a[1]);
    }
 void Update ()
    {
    }
}

三、向量是结构体

public class API12Vector2 : MonoBehaviour
{
 void Start ()
    {
        print(Vector2.down);
        print(Vector2.up);
        print(Vector2.left);
        print(Vector2.right);
        print(Vector2.one);
        print(Vector2.zero);
        Vector2 a = new Vector2(2,2);
        Vector2 b = new Vector2(3,4);
        print(a.magnitude);//2倍根号2a向量的长度的值(开过根号的)
        print(a.sqrMagnitude);//8没开根号的
        print(b.magnitude);//5
        print(b.sqrMagnitude);//25
        print(a.normalized);//返回a单位化之后的向量,对向量本身不产生影响
        print(b.normalized);
        print(a.x+","+a.y);//访问向量的值
        print(a[0]+","+a[1]);


        //向量是结构体,是值类型,要整体赋值。
        transform.position = new Vector3(3,3,3);
        Vector3 pos = transform.position;//transform.position是结构体,不能直接修改其中的值
        pos.x = 10;//改变pos的值不影响transform.position
        transform.position = pos;
 }
 void Update ()
    {
    }
}

四、测试Vector2中的静态方法的使用

public class API12Vector2 : MonoBehaviour
{
 void Start ()
    {
        //print(Vector2.down);
        //print(Vector2.up);
        //print(Vector2.left);
        //print(Vector2.right);
        //print(Vector2.one);
        //print(Vector2.zero);
        //Vector2 a = new Vector2(2,2);
        //Vector2 b = new Vector2(3,4);
        //print(a.magnitude);//2倍根号2a向量的长度的值(开过根号的)
        //print(a.sqrMagnitude);//8没开根号的
        //print(b.magnitude);//5
        //print(b.sqrMagnitude);//25
        //print(a.normalized);//返回a单位化之后的向量,对向量本身不产生影响
        //print(b.normalized);
        //print(a.x+","+a.y);//访问向量的值
        //a.Normalize();//对向量自身进行单位化,会对向量本身产生影响
        //print(a[0]+","+a[1]);
        //向量是结构体,是值类型,要整体赋值。
        //transform.position = new Vector3(3,3,3);
        //Vector3 pos = transform.position;//transform.position是结构体,不能直接修改其中的值
        //pos.x = 10;//改变pos的值不影响transform.position
        //transform.position = pos;


        //测试Vector2中的静态方法的使用
        Vector2 a = new Vector2(2, 2);//ac夹角45度
        Vector2 b = new Vector2(3, 4);
        Vector2 c = new Vector2(3, 0);
        print(Vector2.Angle(a, b));//a,b向量之间的夹角
        print(Vector2.Angle(a, c));
        print(Vector2.ClampMagnitude(c, 2));//c向量的长度限定在2
        print(Vector2.Distance(b, c));//取得bc的长度
        print(Vector2.Lerp(a, b, 0.5f));//a到b之间的差值(2+3)/2=2.5 (2+4)/2=3 (2.5,3)
        print(Vector2.LerpUnclamped(a, b, 0.5f)); //(2 + 3) / 2 = 2.5(2 + 4) / 2 = 3
        print(Vector2.Lerp(a, b, 2f));//返回b 3,4
        print(Vector2.LerpUnclamped(a, b, 2f));//4,6 (比原先的大一倍)
        print(Vector2.Max(a, b));
        print(Vector2.Min(a, b));
    }
    //MoveTowards匀速运动 lerp可以做先快后慢的运动
    public Vector2 a = new Vector2(2,2);
    public Vector2 target = new Vector2(10,3);
 void Update ()
    {
        a=Vector2.MoveTowards(a,target,Time.deltaTime);
   }
}

五、关于三维向量Vector3

Vector3z轴正方向代表前负方向代表后。Vector3可以表示坐标和向量
里面的一些静态变量
在这里插入图片描述
左手法则
在这里插入图片描述

六、对向量的加减乘除操作

public class API12Vector2 : MonoBehaviour
{
 void Start ()
    {
        //print(Vector2.down);
        //print(Vector2.up);
        //print(Vector2.left);
        //print(Vector2.right);
        //print(Vector2.one);
        //print(Vector2.zero);
        //Vector2 a = new Vector2(2,2);
        //Vector2 b = new Vector2(3,4);
        //print(a.magnitude);//2倍根号2a向量的长度的值(开过根号的)
        //print(a.sqrMagnitude);//8没开根号的
        //print(b.magnitude);//5
        //print(b.sqrMagnitude);//25
        //print(a.normalized);//返回a单位化之后的向量,对向量本身不产生影响
        //print(b.normalized);
        //print(a.x+","+a.y);//访问向量的值
        //a.Normalize();//对向量自身进行单位化,会对向量本身产生影响
        //print(a[0]+","+a[1]);
        //向量是结构体,是值类型,要整体赋值。
        //transform.position = new Vector3(3,3,3);
        //Vector3 pos = transform.position;//transform.position是结构体,不能直接修改其中的值
        //pos.x = 10;//改变pos的值不影响transform.position
        //transform.position = pos;
        //测试Vector2中的静态方法的使用
        //Vector2 a = new Vector2(2, 2);//ac夹角45度
        //Vector2 b = new Vector2(3, 4);
        //Vector2 c = new Vector2(3, 0);
        //print(Vector2.Angle(a, b));//a,b向量之间的夹角
        //print(Vector2.Angle(a, c));
        //print(Vector2.ClampMagnitude(c, 2));//c向量的长度限定在2
        //print(Vector2.Distance(b, c));//取得bc的长度
        //print(Vector2.Lerp(a, b, 0.5f));//a到b之间的差值(2+3)/2=2.5 (2+4)/2=3 (2.5,3)
        //print(Vector2.LerpUnclamped(a, b, 0.5f)); //(2 + 3) / 2 = 2.5(2 + 4) / 2 = 3
        //print(Vector2.Lerp(a, b, 2f));//返回b 3,4
        //print(Vector2.LerpUnclamped(a, b, 2f));//4,6 (比原先的大一倍)
        //print(Vector2.Max(a, b));
        //print(Vector2.Min(a, b));


        //对向量的加减乘除
        Vector2 a = new Vector2(2, 2);//ac夹角45度
        Vector2 b = new Vector2(3, 4);
        Vector2 c = new Vector2(3, 0);
        Vector2 res = b - a;//(1,2)如果要玩家望向敌人攻击 则需要敌人的坐标减去玩家的坐标
        print(res);
        print(res * 10);
        print(res / 5);
        print(a + b);
        print(a == b);
    }
    //MoveTowards匀速运动 lerp可以做先快后慢的运动
    //public Vector2 a = new Vector2(2,2);
    //public Vector2 target = new Vector2(10,3);
    void Update ()
    {
        //a=Vector2.MoveTowards(a,target,Time.deltaTime);
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值