下面咱们想模拟一个物体在2d屏幕上沿着一个方向(好比一个箭头sword)加速度行进。假设此方向的速度为moveSpeed,那么分别沿着x轴和y轴的速度就是函数
xSpeed = moveSpeed * Mathf.Cos ((sword.transform.eulerAngles.z+90)*Mathf.PI/180);spa
ySpeed = moveSpeed * Mathf.Sin ((sword.transform.eulerAngles.z+90)*Mathf.PI/180);code
自己moveSpeed是有加速度的,假设此加速度为speed_a,那么在update函数中的实现是这样的orm
moveSpeed += speed_a * Time.deltaTime;//有加速度blog
那么此物体的位置变换函数就是it
transform.position =transform.position + new Vector3 (xSpeed*Time.deltaTime,ySpeed*Time.deltaTime,0);io
总的实现代码如此form
moveSpeed += speed_a * Time.deltaTime;//有加速度 if(moveSpeed < 0){ moveSpeed = 0; speed_a = 0; } xSpeed = moveSpeed * Mathf.Cos ((sword.transform.eulerAngles.z+90)*Mathf.PI/180); ySpeed = moveSpeed * Mathf.Sin ((sword.transform.eulerAngles.z+90)*Mathf.PI/180); transform.position =transform.position + new Vector3 (xSpeed*Time.deltaTime,ySpeed*Time.deltaTime,0);
假设咱们启动物体的函数以下class
void OnMove(Msg msgID, object msgParam){ moveSpeed = 10; speed_a = 2; anim.SetBool ("isMoving",true); Debug.Log ("move..."); }
假设咱们中止物体的函数以下transform
void OnStopMove(Msg msgID, object msgParam){ isMoving = false; speed_a = -30; anim.SetBool ("isMoving",false); Debug.Log ("stop move..."); }