unity游戏对象的操作
控制游戏物体的移动
在场景中已经放置一个物体,创建好脚本绑定好
transform.position+=new Vector3(time.deltaTime*2f,0,0);
//改变物体在x轴方向上移动
transform.translate(Vector.right*Time.daltaTime*2f);
//同上,只是表达方式不同
但是物体会沿着自身的坐标系移动,不会沿着世界坐标系移动
transform.translate(Vector.right*Time.daltaTime*2f,Space.World);
//沿着世界坐标系移动
Vector target=new Vector3(3f,0,-4f);
transform.position=Vector3.Lerp(transform.position,target,Time.deltaTime);
//起始位置,目标位置,从起始位置移动到目标位置,并且移动的效果是先快后慢的效果
这是使用lerp方法的特点
transform.position=Vector3.MoveTowards(transform.position,target,Time.delTime);
//这个是匀速移动,起始位置到目标位置,把值给目标物体的意思
使用按键控制:
第一种是通过if语句分别实现方向的移动,但是操作起来太麻烦
第二中是通过虚拟轴的方法来实现
//使用WSAD来实现
float h=Input.GetAxis("Horizontal");//定义水平方向
float v=Input.GetAxis("Vertical");定义垂直方向
transform.Translate(Vector3.right*h*Time.deltaTime);
transform.Translate(Vector3.forward*v*Time.deltaTime);
//每秒一个单位的速度
实现物体旋转
同理,创建脚本并且绑定到游戏物体上
旋转:欧拉角、四元数
transform.eulerAngles//欧拉角
transform.rotation//四元数
//转化方法
transform.roration.eulerAngles//四元数转换成欧拉角,用.来实现
Quaternion.Euler(transform.eulerAngles);//欧拉角转成四元数
物体的旋转:
transform.Rotate(Vector3.up*Time.deltaTime*30);//游戏物体沿着y轴旋转30度
Quaternion q1=transform.rotation;//定义一个四元数的变量
Vector3 vd=new Vector3(0,5,0);//希望沿着y轴旋转5度
Quaternion q2=Quaternion.Euler(vd);//四元数转换成欧拉角
if(Input.GetKeyDown(KeyCode.R)){
transform.rotation=q1*q2;//按下R键实现功能,顺序不能错,q1是之前的
q2是希望旋转的度数
}