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 () {
//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幀一米,1秒60幀,每秒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; //0到10來回返回,整體-5,就會從-5到5之間執行
obj1.transform.position = startPosition + newVector3(0, 0, value); //在void start裡有定義
Debug.Log(obj1);
}