unity随笔,防止忘记。
一、人物移动,Input.GetAxis();与Input.GetAxisRaw();
Input.GetAxis(); 返回一个浮点数(-1~1),如果先按住左,不松开,再按住右,此时的返回值可能是一个不为零的浮点数,所以如果用他的返回值来确定是否移动的话,就会发生一种情况,按住左,再按右,人物却不会停止下来,而是继续往前进。 控制台中输出的内容是Input.GetAxis();的返回值,按住左不松然后按右,返回值并不是0. 而Input.GetAxisRaw(); 返回-1,0,或1,当同时按下左和右时,返回值为0,所以当需要用函数的返回值是否等于0来判断是否移动,当同时按下左右时不动的时候,应该用Input.GetAxisRaw();而不是Input.GetAxis();
二、Update与FixedUpdate
Update是在每次渲染新的一帧的时候才会调用,导致调用的频率与设备性能,被渲染的物体都有关系。 FixedUpdate是在固定的时间间隔调用。 所以,与物理有关的逻辑,比如处理rigidbody刚体组件,例如改变速度,施加一个力的时候,我们需要把他放在FixedUpdate函数中,而不是Update函数,否则就会发生一个情况:在超级电脑上游戏特别快,玩家反应不过来,在小霸王学习机上游戏特别慢,特别没意思。
|