一、屏幕坐标系和鼠标的坐标
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);
}
}