2つのゲームオブジェクトの違いを計算し、ゆっくりと移動させて位置を入れ替えるコードを作成しましたが、オブジェクトの位置。どんな助け?私はカップルの方法を試みたが、私は彼らが私が望むところで正確に止めることはできなかった。注:最初のオブジェクトをmovedSecondTilePosとmoveFirstTilePosの2番目のオブジェクトで正確に停止します。動きのあるオブジェクトを正確に停止する方法
https://www.youtube.com/watch?v=P42VB0BSBnI
それらが空気であり、その後、位置が入れ替えながら位置が保存されますコード。
EDIT:私はコードを更新しましたが、私はこのコードに非常に近づいていますが、私が望むのと同じポジションではありません。
//Saves Moved Positions of Both Tiles
Vector3 movedFirstTilePos = firstTileObj.transform.position;
Vector3 movedSecondTilePos = secondTileObj.transform.position;
// Calculate the Difference of each Tile from the other
Vector3 firstTilePosDifference = firstTileObj.transform.position - secondTileObj.transform.position;
Vector3 secondTilePosDifference = secondTileObj.transform.position - firstTileObj.transform.position;
//Move First Tile to Second Tile Position and vise versa
while (firstTileObj.transform.position != movedSecondTilePos) {
firstTileObj.transform.position = Vector3.Lerp(firstTileObj.transform.position, movedSecondTilePos, tileMoveSpeed * Time.deltaTime);
secondTileObj.transform.position = Vector3.Lerp(secondTileObj.transform.position, movedFirstTilePos, tileMoveSpeed * Time.deltaTime);
yield return null;
}
Debug.Log ("Swaped Tiles!");
Vector3.MoveTowardsとVector3.Lerpの違いは何ですか? Lerpはあなたが遠いほど速く、あなたが一番遅いのは遅いですか? – N1ckGreek
Lerpは値αに対して値をaからbに移動します。たとえば、a = 10、b = 20、およびalpha = 0.次に、 –
Lerpは値αに対して値をaからbに移動します。たとえば、a = 10、b = 20、およびalpha = 0の場合、結果の値はa(10)になります。アルファ値が1の場合、結果の値はb(20)になります。 > 0および<1のいずれかの値の場合、結果の値はaとbの間になります。 movetowardsの場合、それは一定の値を移動します。遠くのオブジェクトの場合、距離に応じて移動速度を更新しない限り、lerpはMoveTowardsよりも高速に見えます。 –