この問題は説明するのが少し難しく、混乱するかもしれませんが、説明できるように最善を尽くします。ゲーム内のキューブの移動には iTween を使用しています。プレイヤーがアクティブ化キューブと衝突するか、アクティブ化キューブの子である場合、キューブが動き始めます。しかし、プレイヤーが動いている立方体にジャンプすると、立方体が数秒間動きを止めます。その理由はわかりません。これは iTween.MoveTo と関係があります。これは、iTween.MoveBy を使用すると発生しないためです (以下のスクリプトの Cube (1) 2 で行ったように) が、MoveTo を使用する必要があります。
脚本:
using UnityEngine;
using System.Collections;
public class CubeMovement: MonoBehaviour
{
public int startX;
public float startTime;
public int pingPongX;
public float pingPongTime;
private bool started;
public GameObject playerObj;
public float originalY;
public float fallDownTime = 1912;
public GameObject activatingCube;
void Awake()
{
pingPongTime = (startTime / (Mathf.Abs(gameObject.transform.position.x - startX))) * (startX - pingPongX);
}
void Update()
{
Player player = playerObj.GetComponent<Player> ();
//All blocks start moving after 1 click
//if (player.clicks == 1 && started == false)
//{
// StartX ();
//}
Debug.Log(started);
//This block starts moving after player collides with activatingCube
if (started == false && playerObj.transform.parent == activatingCube.transform)
{
StartX ();
started = true;
Debug.Log ("Going to start");
}
}
void StartX()
{
started = true;
Debug.Log ("Started");
if (gameObject.transform.name == "Cube (1)2") //omdat dit blokje hetzelfde is als activating cube werkte het alleen met moveby
{
iTween.MoveBy (gameObject, iTween.Hash ("x", startX, "time", startTime, "easeType", "easeInOutSine", "loopType", "none", "delay", 0));
}
StartCoroutine(FallDown(fallDownTime));
StartCoroutine (StartPingPong (startTime));
if (gameObject.transform.name != "Cube (1)2")
{
iTween.MoveTo (gameObject, iTween.Hash ("x", startX, "time", startTime, "easeType", "easeInOutSine", "loopType", "none", "delay", 0));
}
}
IEnumerator StartPingPong(float startTime)
{
yield return new WaitForSeconds (startTime);
iTween.MoveTo(gameObject, iTween.Hash("x", pingPongX, "time", pingPongTime, "easeType", "easeInOutSine", "loopType", "pingPong", "delay", 0));
}
}
どのように見えるか:
プレイヤーが立方体と衝突すると、立方体から飛び出すまで、その子になります。プレイヤーがキューブの子になるとキューブの動きが止まり、数秒後に再び動き始めるのはなぜですか?