您的位置:首页 > 移动开发 > Unity3D

Unity炮弹拖尾和弓箭的抛物运动方法

2016-01-19 16:53 363 查看
最近遇到了一个很有趣的问题,就是关于炮弹(其实炮弹加上拖尾和弓箭是一样的,这里统一用炮弹说了)发射的问题,炮弹的发射很简单,但是关键在于如果动态的改变炮弹拖尾的方向,额,废话不多说了:

一、给出炮弹的目标点,和运行时的速度。(处理了拖尾效果)

public GameObject target;

public float moveSpeed = 10;

private float distance;

private bool isArived = false;

void Start()

{

distance = Vector3.Distance(this.transform.position, target.transform.position);

StartCoroutine(Shoot());

}

IEnumerator Shoot()

{

while (isArived == false)

{

Vector3 targetPosition = target.transform.position;

this.transform.LookAt(targetPosition);

float angle = Mathf.Min(1,Vector3.Distance(this.transform.position,targetPosition)/distance) *45; //弧度夹角

this.transform.rotation = this.transform.rotation *Quaternion.Euler(Mathf.Clamp(-angle,-45,45),0,0);

float currentDis = Vector3.Distance(this.transform.position,target.transform.position);

this.transform.Translate(Vector3.forward *Mathf.Min(moveSpeed *Time.deltaTime,currentDis));

if (currentDis < 0.2f)

{

isArived = true;

}

yield return null;

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: