animation.Play("action") = true but no animation

Here is the code:

function OnCollisionEnter(hit : Collision)
{	
	if(hit.gameObject.tag == "Kick")
	{		
		Instantiate (particleKick, hit.contacts[0].point, Quaternion.identity);
		Opponent.animation.Play ("beingattack");
		Debug.Log("opponent lightkick beingattack: " + Opponent.animation.Play ("beingattack"));
		Opponent.animation.Play ("defence");
	}

Console msg:
opponent lightkick beingattack: True

However, I did not see the “beingattack” animation clip being played on screen of ipod.

How to fix it?

389461--13397--$screen_shot_2010_09_19_at_122659_pm_128.png
389461--13398--$screen_shot_2010_09_19_at_122624_pm_156.png

If you make two calls in succession to animation.Play, the second animation will start right away without waiting for the first to finish. You can use animation.PlayQueued to make the second animation wait until the first has played out.

I am not sure the QueueMode is correct or not

Either QueueMode.CompleteOthers or QueueMode.PlayNow is the same

or the action is too fast and I still just see the second animation.

Opponent.animation.Play ("beingattack"); 
Opponent.animation.PlayQueued("defence", QueueMode.PlayNow);

beingattack - 1 second
defence - 2 seconds

Does it fail even if you use PlayQueued for both animations? (CompleteOthers is definitely the right mode, btw.)

case 1

Opponent.animation.PlayQueued ("beingattack", QueueMode.CompleteOthers) 
Opponent.animation.PlayQueued("defence", QueueMode.CompleteOthers);

No action, Failed

case 1

Opponent.animation.PlayQueued ("beingattack", QueueMode.PlayNow) 
Opponent.animation.PlayQueued("defence", QueueMode.CompleteOthers);

only play “beingattack”

put your animations in layers…