- 最后登录
- 2019-12-25
- 注册时间
- 2012-8-24
- 阅读权限
- 90
- 积分
- 71088
- 纳金币
- 52336
- 精华
- 343
|
using UnityEngine;
using System.Collections;
/// <summary>
///树先旋转平行地面,下降,在升起
///树倒下,隐藏地面,然后慢慢长起来
/// </summary>
public class TreeDeath : MonoBehaviour{
Quaternion wantQ ;//想转到的Quaternion
Quaternion BeforeQ;
Vector3 DownP;
Vector3 BeforeP;
float speed = 0.7f;//倒下的速度
bool isDown =false;//是否开始下降
bool isUp =false;
public void Death()
{
BeforeQ = transform.rotation;
BeforeP = transform.position;
Vector3 dir =transform.rotation *new Vector3(Random.Range(-1f,1f),0f,Random.Range(-1f,1f))
* Random.Range(0,360) ;//旋转使用的轴方向
wantQ= Quaternion.AngleAxis(120, dir) * transform.rotation;
StartCoroutine ("RoTation");
}
IEnumerator RoTation()
{
for(;;)
{
if(isUp)
{
if( transform.position.y>=BeforeP.y )//判断树是否升起到原来的高度
{
gameObject.tag = Tags.Tree;//这里使得树变成可攻击对象
isUp =false;
isDown =false;
GetComponent<LifeState>().Upgrade(); //这里刷新血量
yield break;
}
transform.position = new Vector3(transform.position.x,transform.position.y+Time.deltaTime*speed,transform.position.z);
}
else
{
if(isDown==false)
{
//判断树是否已经倒了,树平行地面
if((int)transform.localEulerAngles.x==77 || (int)transform.localEulerAngles.x==291
|| (int)transform.localEulerAngles.z==77 || (int)transform.localEulerAngles.z==291)
{
isDown =true;
continue;
}
transform.rotation = Quaternion.Lerp(this.transform.rotation, wantQ, Time.deltaTime * speed);
}
else
{
if( BeforeP.y -transform.position.y >5)//判断树是否下降到了5米
{
gameObject.transform.rotation =BeforeQ;
gameObject.tag =Tags.TreeGrowth;//这里使得树变成不可攻击对象
isUp =true;
continue;
}
transform.position = new Vector3(transform.position.x,transform.position.y-Time.deltaTime*speed,transform.position.z);
}
}
yield return new WaitForEndOfFrame();
}
}
}
|
|