Unity游戏物体的移动与输入控制

一、Unity的坐标轴

向右为x轴正轴,向上为y轴正轴,向前为z轴正轴(左手坐标空间)。

二、游戏物体与脚本绑定

(1)在Scene场景中新建一个GameObject游戏物体,可以是Cube方块。

(2)在Assets资源中新建一个C#脚本,命名为Control.cs。

(3)将Control.cs文件拖到游戏物体Cube上,即可完成游戏物体的脚本绑定。

三、游戏物体与摄像机的位置调整

选中游戏物体,在编辑器右侧的Inspector栏可以设置三轴向的基本属性,即位置、旋转角、规模。

在清单中将摄像机拖到游戏物体上,使得摄像机成为游戏物体的附属,即摄像机跟随游戏物体。

根据游戏内容的需要调整好摄像机的角度远近以及是否跟随运动的游戏物体。

四、物体的移动方式

(1)直接移动

使用Translate()方法,对脚本绑定的游戏物体直接生效。

//使得脚本直接绑定的物体在x轴方向上每一帧移动1.2f的距离
void Update(){
    transform.Translate(1.2f,0,0);//f指的是float型
}

(2)按键控制

使用Input类获取输入参数,利用参数的传递来控制游戏物体的状态。

//按下WASD使得游戏物体在x轴与y轴方向移动(输入控制)
public float horizontal;//定义水平变量(公有)
public float vertical;//定义垂直变量(公有)
void Update(){//每一帧执行一次
    horizontal = Input.GetAxis("Horizontal");//该轴默认由键盘的A和D以及方向左右键触发
    vertical = Input.GetAxis("Vertical");//该轴默认由键盘的W和S以及方向上下键触发
    transform.Translate(horizontal,vertical,0);//GetAxis值的范围是(-1,0,1)
}

(3)参数控制

为了控制移动的比率,可以新增一个参数辅助计算。(声明为公有变量时可以在Inspector栏中找到这个变量的数值输入口。)

//设置可调节参数speed
public float speed;
void Update(){
    transform.Translate(1.2f*speed,0,0);
}

(4)物理系统

使用AddForce()方法,需要一个刚体对象。在场景中选择一个游戏物体于Component->Physics->Rigidbody 添加刚体组件。在脚本中声明一个公共的刚体变量,再将游戏物体的名称赋给这个刚体变量实现绑定。

//给一个刚体施加力使得往力的方向移动
public Rigidbody cube;//声明一个刚体对象
void Udpate(){
    cube.AddForce(10,0,0);//每一帧施加10N的力
}

 五、Update与FixedUpdate的时间帧优化

(1)Update的说明

Update是每一帧执行一次,两个Update之间是一个Time.deltaTime。因为帧率会有波动,按照每一帧移动一个距离,那么同样的时间长度不同测试用例间的移动距离是不一样的。这时使用Time.deltaTime作为附加参数可以使得每一秒钟物体移动的距离一致。

//使用Time.deltaTime辅助步长,帧生成时间越短则步长越短
void Update()
{
    transform.Translate(1.2f*Time.deltaTime,0,0);
}

(2)FixedUpdate的说明

FixedUpdate是固定时间执行一次(以真实时间计算),两个FixedUpdate之间是一个Time.fixedDeltaTime(系统默认0.02s)。对刚体运动的物理系统需要准确的时间处理,使用FixedUpdate可以确保施加的物理作用有确定的时间间隔,所以前文的物理系统改用FixedUpdate更合适。

//给一个刚体均匀施加固定量的力
public Rigidbody cube;
void FixedUpdate(){
    cube.AddForce(10*Time.fixedDeltaTime,0,0);//AddForce是固有方法
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值