Unity3d - zmiana animacji ruchu


#1

No hej, mam problem i nie mam trochę sił kombinować samemu, te historie mnie dołują strasznie.
Robię sobie prostą fabularnę grę klikaną w stylu rpg, i nie mogę ogarnąć zmiany animacji. Podstawowo mam dwie animacje które na animatorze są osobno/nie powiązane. Odgrywam animacje komendą animator play i animacje idle i walk grają dobrze. Tu jest skrypt.

void Animating (float h, float v)
{
	
	// Create a boolean that is true if either of the input axes is non-zero.

	bool walking = h != 0f || v != 0f || Input.GetButton("Fire1") != false;
	/*
	// Tell the animator whether or not the player is walking.
	//anim.SetBool ("IsWalking", walking);
	anim3d.Play("BasicMotions@Walk01", 0);
	*/
	if (Input.GetButton("Fire1") != false || h != 0f || v != 0f)
	{
		anim3d.Play("BasicMotions@Walk01", 0);
	}

	if (walking == false)
	{
		anim3d.Play("BasicMotions@Idle01", 0);
	}

	if (Input.GetMouseButtonDown(1))
	{
		anim3d.Play("Shoot01", 1);
	}

}

Idle działa domyślnie raczej nonstop, walk działa po kliknięciu lpm, ale za każdym razem kiedy klikam ppm animacja strzału działa tylko chwilę i potem wraca do idle. W jakiś sposób idle dalej odgrywa, ale dla czego przy animacje walk działa normalnie a shoot już nie? Ktoś może pomóc ułożyć ten skrypt żeby animacja pokazała się cała i ładnie zapętlała? Bo na razie to nic nie ma postępu…


#2
		if (Input.GetButton("Fire1") != false || h != 0f || v != 0f)
	{
		//anim3d.Play("BasicMotions@Walk01", 0);
		anim3d.SetFloat("LukePAnimatorBlend", 0.33f);
	}

	if (walking == false)
	{
		//anim3d.Play("BasicMotions@Idle01", 0);
		anim3d.SetFloat("LukePAnimatorBlend", 0f);
	}

	if (Input.GetMouseButtonDown(1))
	{
		anim3d.SetFloat("LukePAnimatorBlend", 1f);
	}

Zmodyfikowałem kod do blendtree, i ciągle jest to samo - animacja idle i walk działają dobrze przy określonych zadaniach. A animacja shoot miga tylko jedną klatkę albo wcale i wraca do poprzedniej animacji.
Nie wiem, może nie powinienem robić animacji jednoklatkowej? Ale właśnie chciałem zapętlić jedną klatkę w wieczność - w czasie obracania się postaci. Nie wiem już co robić :confused: .


#3

Gotowe, można zamknąć.

Wystarczyło zamienić getbuttondown na getbutton. I działa.