Wpis z mikrobloga

#unity #unity3d
Stworzyłem laser z LineRenderer i chciałem żeby materiał którego użyłem do wyświetlania laseru poruszał się.
Użyłem takiego kodu, gdzie zmieniam parametr Offset - nie wywala błędu, ale jednak nie widzę działania.
Domyśla się ktoś, co jest tego przyczyną, powinienem coś dodać?
Wołam @Wextor , bo mądra głowa.

Wklejam fragment kodu:

IEnumerator FireLaser()
{
line.enabled = true;
while (Input.GetMouseButton(0))
{
line.GetComponent().material.mainTextureOffset = new Vector2(0, Time.time);
Ray2D ray = new Ray2D(transform.position, transform.right);
RaycastHit2D hit;

line.SetPosition(0, ray.origin);

hit = Physics2D.Raycast(ray.origin, Vector2.right, 100);

if (hit.collider)
{
line.SetPosition(1, hit.point);
}
else
line.SetPosition(1, ray.GetPoint(100));

yield return null;
}
line.enabled = false;
}

Wklejam też film, z którego korzystałem
W.....i - #unity #unity3d
Stworzyłem laser z LineRenderer i chciałem żeby materiał k...
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Odwołujesz się do renderera obiektu a nie do line renderera. Zamień tamtą linię na:
line.material.mainTextureOffset = new Vector2(0, Time.time);

Jak nie działa to zobacz dwie kwestie:
1. Czy tekstura jest zmienna w osi y? Bo jeśli nie to nie będzie efektu. Spróbuj zmienić na new Vector2( Time.time, 0); i zobacz czy jest różnica.
2. Dany shader może nie obsługiwać offsetu. Spróbuj z innym materiałem.
  • Odpowiedz
@Kozun: Zmieniłem tę linijkę i działa! Piękne dzięki!
Wybacz, że tak późno odpisałem - nie napisałeś mojego nicku i nic nie wyświetliło się powiadomieniach, a dopiero niedawno coś mnie tchnęło żeby spojrzeć na mój post.
  • Odpowiedz