2013-04-05 99 views
-1

我團結對象移動的波在Unity 3D

GameObject monsterclone = 
     (GameObject)Instantiate(monsterPrefab, floorPosition, Quaternion.identity); 

此對象應在波風格從極限1至極限2移動創建的對象。

然後從限制2移回限制1。 Y位置以及X位置必須以特定方式改變。

Vector3 nPos = mfloorPos + new Vector3(2f, 0f, 0f); 
Vector3 oPos = mfloorPos + new Vector3(-2f, 0f, 0f); 

我該怎麼辦?

enter image description here

+0

以上代碼發生了什麼變化?而不是一個gameObject,你是否嘗試創建一個轉換。 – ApolloSoftware 2013-04-05 13:40:35

+0

這個問題需要澄清一下 - 物體必須移動到什麼樣的波浪中,它是一個正弦波,一個一致的鋸波運動還是一個減弱的彈跳運動?圖片不夠清晰,看不到你想要的東西... – 2013-04-09 07:36:40

回答

1
float amplitudeX = -25.0f; 
float amplitudeY = 5.0f; 
float omegaX = 0.5f; 
float omegaY = 4.0f; 
float index; 

void Update() { 
    index += Time.deltaTime; 
    float x = amplitudeX*Mathf.Cos (omegaX*index);  
    float y = Mathf.Abs (amplitudeY*Mathf.Sin (omegaY*index)); 
    if(transform.position.x > 24){ 
      transform.eulerAngles = new Vector3(270, -90, 0); 
    } 
    if(transform.position.x < -24){ 
      transform.eulerAngles = new Vector3(270, 90, 0); 
    } 
    transform.localPosition= new Vector3(x,y,20); 
} 
1

我不能確切地寫代碼不知道更具體的,但我認爲這個問題已經問任何此鏈接將幫助你MOVE OBJECT as wave

編輯:

我認爲平坦和浮動的功能將爲你工作爲移動一個點到另一個 例如:

var floatup; 
function Start(){ 
floatup = false; 
} 
function Update(){ 
if(floatup) 
floatingup(); 
else if(!floatup) 
floatingdown(); 
} 
function floatingup(){ 
transform.position.y += 0.3 * Time.deltaTime; 
yield WaitForSeconds(1); 
floatup = false; 
} 
function floatingdown(){ 
transform.position.y -= 0.3 * Time.deltaTime;; 
yield WaitForSeconds(1); 
floatup = true; 
} 

example taken from

+0

通過移動y位置我們如何讓波。我已經搜索並通過了這些答案。要求你寫出工作答案 – Sona 2013-04-05 10:01:02

+1

其實,它的確如你所描述的那樣。它會像浪潮一樣起伏... – Joetjah 2013-04-05 12:56:31

+1

它會上升和下降。因爲我可以使用乒乓球。但我想移動x位置也..我編輯問題與圖像 – Sona 2013-04-09 07:00:10

0

如果這是一個consitant波,而不是依賴於速度,我會用一個動畫來創造價值Position.Y的字面波曲線(多爲中拉溫德拉謝卡瓦特解釋的原理相同。)你可以找到更多關於動畫的信息here.

這裏有一些代碼(未經測試),你可以關閉。它在C#中,所以我希望它證明沒有問題,加入JavaScript。

bool monsterMoving = false; 

void Update(){ 
    //check monster moving to start updating position 
    if(monsterMoving == true){ 

     //moving animation controls up and down "wave" movement 
     animation.CrossFade('moving'); 

     //Lerp changes position 
     Transform.Lerp(transform.Position, oPos, Time.deltaTime); 

     if (transform.Position == oPos) { 
      //We are at destination, stop movement 
      monsterMoving = false; 
     } 

    } else { 
     // if monster stopped moving, return to idle animation (staying still) 
     animation.CrossFade('idle'); 
    } 
} 

// function to send a new position to the monster object 
void MoveTo(Vector3 newPos){ 
    oPos = newPos; 
    monsterMoving = true; 
} 
+0

「希望你沒有得到我的問題」?不知道我明白你的意思。這個解決方案會產生你在編輯之前在問題中描述的效果。 Update()上的兩個點之間的轉換函數以及創建Up和Down運動的動畫將解決物體在波中上下波動的問題,同時對象從A移動到B.它可能不適合您的解決方案之後你用上面的圖片編輯,但你需要清楚地解釋你的答案,所以我們可以幫助更清楚地回答問題。 – 2013-04-09 07:27:28

相關問題