Cách làm hiệu ứng trong unity khi bắn ra thì to lên theo thời gian?

Em muốn bắn ra một cái hiệu ứng từ tay con nhân vật, lúc đầu thì nó nhỏ sau đó thì nó to dần theo thời gian thì phải làm sao ạ ?

Mình không biết bạn rành Unity tới cỡ nào nên mình cho rằng bạn biết cách viết script cơ bản. Nhưng mà mình vẫn cố giải thích như là bạn là beginner để mọi người có thể học hỏi luôn :slight_smile:

Bạn có thể dùng transform.localScale để chỉnh sửa cái scale to nhỏ của nhân vật.
localScale sữ dụng Vector3 để biết dc là nó muốn scale của direction nào

VD:

transform.localScale = new Vector3(1,2,1) //làm to nhân vật gấp đôi ở hướng y
transform.localScale = new Vector3(2, 1, 0.2f) // làm nhân vật to gấp đôi ở hướng x với nhỏ gấp 5 ở hướng z, f nói unity đây là số float

Vậy nên, để một nhân vật to dần, bạn phải tăng cái trị số localScale này ở mổi frame. Update() đảm nhiệm việc chạy mổi frame của Unity của nhân vật:

public float x,y,z;
void Update()
{
    transform.localScale = transform.localScale + new Vector3(x,y,z);
}

Như thế này, cứ mổi frame, nhân vật của bạn sẽ to lên tùy vào số lượng x,y,z mà bạn định sẵn. Nếu bạn muốn cả ba chiều đều tăng đồng đều thì bạn có thể dùng

transform.localScale = transform.localScale + Vector3.one * s;

Unity dùng Time.DeltaTime để đếm giờ, nếu bạn muốn nó tăng đều theo thời gian, bạn có thể dùng

transform.localScale += Vector3.one * Time.deltaTime;

Cuối cùng, bạn có thể chỉ muốn nhân vật của bạn lớn tới 1 lúc nào đó (VD như to gấp 3), bạn có thể làm như sau:

public float x,y,z;
public max;    //Phải tự để cái max này tùy ý bạn
void Update()
{
    if(transform.localScale.x < max)
    {
        transform.localScale = transform.localScale + new Vector3(x,y,z);
    }
}

Sorry vì reply trễ. Mình không có check forum nhiều nên nếu bạn chịu khó vô Discord của DNH, mình sẽ có thể giúp bạn nhanh hơn :smiley:

3 Likes

ok thanks ad đã giúp em

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?