Input.GetAxis 獲取軸
方法描述;根據axisName名稱返回虛擬輸入軸中的值。
float ver = Input.GetAxis("Vertical")*speed;//獲取X軸,默認情況下他們關聯到方向鍵上,值在-1到1之間
float hor = Input.GetAxis("Horizontal")*rotationSpeed;//獲取Y軸
transform.Translate(new Vector3(hor, 0, ver) * Time.deltaTime * 3); ? ?//移動
Rigidbody 剛體
通過物理模擬控制一個物體的位置。
添加Rigidbody組件到一個對象,這就置于了Unity的物理引擎下使其運動。即使沒有添加任何代碼,剛體對象也將在重力的影響下下落,如果帶有碰撞器的對象與之碰撞,并將做出反應。
從腳本添加力到剛體對象上,以真實的物理方法來控制它。例如,轎車的行為可以給輪胎施加力,物理引擎處理運動的其他方面,因此,會有更真實的加速度和正確的碰撞反應。
drag?剛體的阻力。?
position 該剛體的位置。
rotation 剛體的旋轉角度。
useGravity 控制重力是否影響整個剛體。
isKinematic?控制物理是否夠影響這個剛體。
AddExplosionForce應用一個力到剛體來模擬爆炸效果。
這個方法有四個參數.并且爆炸效果的物體要是剛體.
explosionForce
爆炸力,可以通過距離來修改
explosionPosition
爆炸中心
explosionRadius
爆炸的半徑,在半徑內才有爆炸效果。
upwardsModifier
調節爆炸出現的位置,使其看起來像掀起對象。
mode
用于應用到目標力的方式。
運用這個方法需要獲取到多個碰撞體
以下這個方法能夠獲取到在一個中心點內,一個半徑內的所有碰撞體
public static Collider[] OverlapSphere(Vector3 position, float radius);
返回值是一個Collider類型的數組.
然后需要遍歷這個數組,再判斷每一個元素是否是剛體,如果是,就給一個爆炸的效果
void OnCollisionEnter(Collision collision)? ?
?{? ? ? ?
?if (collision.gameObject.name == "Exp") ? ? ? ?//Exp是一個空物體當碰到這個空物體是爆炸
{? ? ? ? ? ?
?Vector3 pos = transform.position; ? ? ? ? ? ?//獲取當前對象的位置
Collider[] collider = Physics.OverlapSphere(pos, 10); ? ? ? ? //返回以該對象為中心 10為半徑的圓內所有碰撞體 ??
Debug.Log(collider.Length); ? ? ? ? ? ?//打印獲取到了多少個碰撞體
foreach (Collider item in collider) ? ? ? ? ? //遍歷數組
?{ ? ? ? ? ? ? ??? ? ? ??
if (item.GetComponent<Rigidbody>()) ? ? ? ? ? ? //判斷該對象是否是剛體
?{? ? ? ? ? ? ? ? ? ??
item.GetComponent<Rigidbody>().AddExplosionForce(_force, pos, 10, 10F);//給物體添加爆炸效果
}
}
}
}
Ray(射線)
Ray是具有開始點和方向的無窮線。
射線的方向。
射線的原點。
返回射線上指定距離的點。
if (Input.GetMouseButtonDown(0))//當按下鼠標左鍵時
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//創建一條射線,從相機射出一條射線方向是鼠標的位置
RaycastHit hit; //用于保存射線的信息
if (Physics.Raycast(ray, out hit))//判斷射線是否射在碰撞體上
{
GameObject a1 = Instantiate(a) as GameObject; //添加預設體
a1.transform.position = hit.point;//將預設體的位置設置為射線與碰撞體的焦點
}
}