[英]How can I reduce the gaps between objects?
在頂部:
[Range(10, 100)]
public int gap = 10;
private int oldGapValue = 0;
在更新中:
private void Update()
{
if(gap > oldGapValue)
{
for(int i = 0; i < numberOfUnits; i++)
{
units[i].transform.position = (i + 1f) * new Vector3(gap, 0, 0);
}
oldGapValue = gap;
}
else
{
}
這適用於增加間隙。 但在其他部分我想減少對象之間的差距。
我試過這個,但效果不好,現在它在減少間隙時工作正常,但現在當添加間隙時它不能正常工作,它會增加間隙,但也會將單位對象加倍,直到我停止添加間隙,這一切都是口吃。
if(gap > oldGapValue)
{
for(int i = 0; i < numberOfUnits; i++)
{
units[i].transform.position = (i + 1f) * new Vector3(gap, 0, 0);
}
oldGapValue = gap;
}
else
{
for (int i = 0; i < numberOfUnits; i++)
{
units[i].transform.position = (i + 1f) * new Vector3(-gap, 0, 0);
}
}
由於您的邏輯,您似乎正在嘗試通過gap
的值在每一幀中間隔對象。
我是否可以建議一種不同的方法,並且僅在gap
值實際發生變化時才更改 object 間距。 例如,試試這個代碼:
[SerializeField]
[Range ( 10f, 100f )]
private float _gap = 10f;
private float _oldGap = 10f;
public float gap
{
get => _gap;
set
{
_oldGap = _gap;
Debug.Log ( $"New Gap Value {_gap}" );
for ( int i = 0; i < units.Length; i++ )
{
units [ i ].transform.position = new Vector3 ( (gap * i) + 1f, 0, 0 );
}
}
}
private void OnValidate ( )
{
if ( _gap != _oldGap )
gap = _gap;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.