簡體   English   中英

如何減少對象之間的間隙?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM