1. 程式人生 > >Unity7--鍵盤按鍵、沿Z軸移動來回迴圈、PingPong用法

Unity7--鍵盤按鍵、沿Z軸移動來回迴圈、PingPong用法

一、建立個TransformTest檔案

//GameObject Transform雖然都可以得到名字但有區別--------------寫在最上邊的程式碼

publicGameObject obj1;

    publicTransform obj2;

  //4對應的程式碼

//如果int Flag 1,就正方向移動

int intFlag = 1;

    publicfloat speed;

//從這開始:

1.void Start () {

//1.都可以得到GameManger,不同寫法而已

Debug.Log("Transform.name" + this.transform.name);

Debug.Log("gameObject.name" + this.gameObject.name);

Debug.Log(transform.gameObject.name);

Debug.Log(gameObject.transform.name);

//2.

Debug.Log("obj1.name" + obj1.name);

Debug.Log("obj2.name" + obj1.name);

//雖然都可以得到名字,都各有特點

Debug.Log(obj1.transform.position);

Debug.Log(obj2.position);

2.void Update () {            

--也有GetKeyUp

//3.通過獲取按鍵,按鍵才會走

if (Input.GetKey(KeyCode.W)) //--------前進

{

obj1.transform.Translate(Vector3.forward * Time.deltaTime * 2);//

}

if (Input.GetKey(KeyCode.S)) //----------後退

{

obj1.transform.Translate(Vector3.back * Time.deltaTime * 2);

}

if (Input.GetKey(KeyCode.A)) //--------左移

{

// obj1.transform.Translate(Vector3.left *Time.deltaTime * 2);    

obj1.transform.Rotate(newVector3(0, -30, 0) * Time.deltaTime);//左旋轉 W A 會左轉彎

}

if (Input.GetKey(KeyCode.D)) //---------右移

{

// obj1.transform.Translate(Vector3.right  * Time.deltaTime * 2);-----------右移

obj1.transform.Rotate(newVector3(0, 30, 0) * Time.deltaTime);//右旋轉 W A 會轉彎

}

if (Input.GetKey(KeyCode.Space))// --------

{

obj1.transform.Translate(Vector3.up * Time.deltaTime * 2);

}

//物體會前進定義的是速度

//  obj1.transform.Translate(Vector3.forward *Time.deltaTime *2);//1幀一米,160幀,每秒1米, //相當於每秒向前走兩  

       米,2是速度

二、//練習題目4.沿著Z軸移動,到10就返回反方向移動來回循化

     // 最上面有對應的4程式碼公共定義

 void Move()                       //-----------在Update裡呼叫

    {

        //如果z軸座標大於10,就向負方向移動

         if(obj1.transform .position .z>10)

        {

            intFlag = -1;

        }

        //遊戲物件的座標小於0的時候,就向正方向移動

         if(obj1.transform .position .z <=0)

        {

            intFlag = 1;

        }

        //如果intFlag=-1,那麼Vectore3.forword *intFlag 等同於Vectore3.back,

       obj1.transform.Translate(Vector3.forward * intFlag * Time.deltaTime * speed);//在unity裡可定義speed

   }

三、用PingPong方法實現上面的題目來回迴圈

  publicVector3 startPosition;

  publicGameObject obj1;

1.void Start () {

  publicVector3 startPosition;

}

2.void Update () {

   //用PingPong 求4的要求,簡單----兩行程式碼就行     

    float value= Mathf.PingPong(Time.time, 10)-5;            //010來回返回,整體-5,就會從-55之間執行

    obj1.transform.position = startPosition + newVector3(0, 0, value);   //在void start裡有定義

    Debug.Log(obj1);

}