1. 程式人生 > >Unity解決物體移動速度過快而導致不能檢測到碰撞的問題

Unity解決物體移動速度過快而導致不能檢測到碰撞的問題

問題:假設現在A物體以非常高的速度移動,而unity每一幀的檢測時間大概是0.02秒,也就是說如果物體A速度過快,在不用0.02秒的時間就已經穿過了其他物體,那麼這個時候是無法檢測A與其他物體之間的碰撞資訊的,解決方法如下

void Update () 
{
		Vector3 oriPos = transform.position;//記錄原來的位置
		transform.Translate (Vector3.forward * speed * Time.deltaTime); //移動
		float length = (transform.position - oriPos).magnitude;//射線的長度
		Vector3 direction = transform.position - oriPos;//方向
		RaycastHit hitinfo;
		bool isCollider = Physics.Raycast (oriPos, direction,out hitinfo,length);//在兩個位置之間發起一條射線,然後通過這條射線去檢測有沒有發生碰撞
		if(isCollider)
		{
			....
		}
}