Unity API常用方法和类(三)

鼠标按键事件的监测
nput.GetMouseButton(参数0,1,2);
检测按下鼠标上的键,0代表左键,1代表右键,2代表中键;可以持续检测;
Input.GetMouseButtonDown(参数0,1,2);
只检测一次;

GetButtonXXX相关事件监测
getbutton(“虚拟按键名”);
虚拟按键可对应多个物理按键;
如 fire1 ;

Unity API常用方法和类(三)
使用GetAxis得到轴的值的变化来控制移动
Input.GetAxis(“Horizontal”);
Horizontal,横轴;
Vertical,纵轴;
控制轴的移动也可以控制物体的运动,有渐变的效果;
由0到1,或由0到-1;
GetAxisRaw:没有渐变效果;
加速移动
cube.Translate(Vector3.rightTime.deltaTimeInput.GetAxis(“Horizontal”));
直接满速移动
cube.Translate(Vector3.rightTime.deltaTimeInput.GetAxisRaw(“Horizontal”));

Input.GetAxis() //返回float值
GetAxis 获得轴,模拟加速运动;
GetAxisRaw 按下立刻运动;

Unity API常用方法和类(三)
GetTouch 触摸;
anykey 任何键;
mousePosition 像素坐标;

Vector2中的变量
x左右
y上下
z前后
magnitude
normalized
sqrMagnitude:没有开根号的向量.x2+y2
变量
magnitude:取得向量的长度
normalized:对向量进行单位化
sqrMagnitude:取得向量的长度的平方
mormalized:把坐标值都变为1;

Unity API常用方法和类(三)
向量是结构体
向量是结构体,是值类型,要整体赋值.
transform.position=new Vector3(3,3,3);
Vector3 pos=transform.position;
pos.x=10;
transform.position=pos;

二维向量Vector2中的静态方法
Set 赋值;
Tostring 转变为字符串;
Angle 取得夹角;
Clamp Magnitude 限定长度;
Distance 距离;
Equals:判断两个向量是否相等
Normslize:自身单位化
Set:赋值
ToString:转变成字符串,可以进行一个格式化的输出
结构体是值类型,要整体赋值(struct, position)
transform.position = new Vector3(3,3,3,);
Vector3 pos = transform.position;
pos.x = 10;
transform.positio n = pos;
向量是结构体,是值类型,要整体赋值.
transform.position=new Vector3(3,3,3);
Vector3 pos=transform.position;
pos.x=10;
transform.position=pos;

关于三维向量Vector3
Unity API常用方法和类(三)
Unity API常用方法和类(三)
根据这个公式就可以计向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:
a·b>0 方向基本相同,夹角在0°到90°之间
a·b=0 正交,相互垂直
a·b<0 方向基本相反,夹角在90°到180°之间

叉乘: 在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。
若向量a=(a1,b1,c1),向量b=(a2,b2,c2),

向量a·向量b=a1a2+b1b2+c1c2
向量a×向量b=
| i j k|
|a1 b1 c1|
|a2 b2 c2|
=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)
(i、j、k分别为空间中相互垂直的三条坐标轴的单位向量).
叉乘的意义就是通过两个向量来确定一个新的向量,该向量与前两个向量都垂直
使用Random生成随机数
Range 数值;
InitState 初始化,种子;
Ticks 当前时间减去时间戳的时间间隔
随机数:
Random.Range(4,10):随机输出4到10之间的整数,但是不包括最大值10,可以包括最小值;
Random.Range(4,5f):随机生成四到五之间的小数,(加了一个f);
获取当前时间:System.DeteTime.Now.Ticks;
Random.InitState(int seed):根据种子(seed)产生随机数;
生成随机数
Random.Range
Random.InitState(int):给予生成随机数的种子
Unity API常用方法和类(三)
其他随机生成方法
Random.value;随机生成0到1之间的小数,包括0和1;
Random.state:获取当前的状态, 也就是获取种子;
Random.rotation:随机获取四元素,获得一个朝向;
Random.insideUnitCricle:随机以半径为一的圆内生成位置;二维位置
Random.insideUnitSphere:随机在一个球体内生成
value 0-1之间的随机数;
state 获取状态;
rotation 四元素,控制朝向;
insideUnitCircle 圆内随机生成;
insideUnitSphere 球内随机生成;
FindObjectsOfType:查找场景中所有符合这个类型的组建,并返回.查找**的游戏物体.
Unity API常用方法和类(三)

Quaternion四元数介绍以及和欧拉角的区别
Quaternion 旋转;
enlerAngles 欧拉角;
rotation 四元数;
四元数方便计算,欧拉角方便观察;

Rigidbody刚体组件中position和MovePosition控制移动
LookRotation()前方向变为获取的方向;
eulerAngles 四元素变欧拉角;
Euler 欧拉角变四元数;
通过enlerAngles可以把四元数转化为欧拉角;eg:cube.rotation.eulerAngles;
通过Euler可以把欧拉角转化成四元数;cube.rotetion=Quaternion.Euler(new Vector3(45,45,45));

让游戏主角朝向敌人:
Vector3 dir =enemy.potation-player.potation;
dir.y=0;
player.rotation=Quaternine.LookRotation(dir);
Quaternion.LookRotation(position1-position2)
Quaternion.Euler(new vector3)//将欧拉角转换为四元数
推荐通过刚体改变物体位置会更快,而且性能更高
使用Rigidbody.MovePosition控制物体移动会更平滑
rigidbody.MoveRotation(Quaternion.Slerp(player.transform.position+Vector3.forwardTime.deltaTime));
playerRgd.AddForce(Vector3.forward
force)
playerRgd.position=playerRgd.transform.position+Vector3.fprwardTime.deltaTime10
playerRgd.MovePosition(playerRgd.transform.position+Vector3.fprwardTime.deltaTime10)

Application.dataPath//返回文件根目录
StreamingAssets//不会被压缩保持原样
SceneManager.LoadScene(后标);
SceneManager.LoadScene(“输入切换后的场景的名字”)
SceneManager.LoadSceneAsync//异步加载场景
//返回一个AsyncOperation 加载进度
Unity API常用方法和类(三)
GetActiveScene//获取当前场景
sceneCount:当前加载场景的数量;
GetActiveScene:得到当前场景的一些基本信息;
eg:SceneManger.GetActiveScence().name;