unity2d之速度和加速度模擬

下面咱們想模擬一個物體在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...");
    }
相關文章
相關標籤/搜索