帧率观察:
Debug.Log("** 帧更新 Time:" + Time.time); //游戏时间,也就是从开始到现在的时间长度
Debug.Log("** 帧更新 Time:" + Time.deltaTime); //距离上一次更新的时间差
帧率是不固定的
- Unity 不支持固定帧率,但可以设置一个近似帧率
Application.targetFrameRate = 60;
物体运动
var position = gameObject.transform.position;
position.x += 0.01f;
gameObject.transform.position = position;
物体的运动不是匀速的,虽然每次更新都是往x轴加0.01,但是deltaTime不是固定的
物体匀速运动
var speed = 3; //速度,每秒移动3米
var distance = 3 * Time.deltaTime;// 得到这一次应该移动的距离 速度 * 时间
var position = gameObject.transform.localPosition;
position.x += distance;
gameObject.transform.localPosition = position;
物体的相对运动
只需要给出一个值,会自动计算相对上一次的距离,第四个参数为坐标系:
- 世界坐标系
- 本地坐标系 沿自己的坐标系,前后左右移动
gameObject.transform.Translate(0, 0, distance, Space.Self);
运动的方向
void Start()
{
var obj = GameObject.Find("红旗");
gameObject.transform.LookAt(obj.transform); //使物体的Z轴指向目标物体,若目标物体在空中,则物体会起飞
}
// Update is called once per frame
void Update()
{
var speed = 1; //速度,每秒移动3米
var distance = speed * Time.deltaTime;// 得到这一次应该移动的距离 速度 * 时间
gameObject.transform.Translate(0, 0, distance, Space.Self);
}
标签:distance,gameObject,transform,更新,Time,var,position
From: https://www.cnblogs.com/duixue/p/18301357