纯粹 "子弹" 的话. Unity自带的例子 AngryBots 中给出了一种做法.发射时利用射线检测射击到的目标点.直接给予伤害及特效音效表现.而子弹只是作为一道快速的直线飞过.并没有什么判断逻辑.代码如下( JS版 ):
发射 :
// Spawn visual bullet
var coneRandomRotation = Quaternion.Euler (Random.Range (-coneAngle, coneAngle), Random.Range (-coneAngle, coneAngle), 0);
var go : GameObject = Spawner.Spawn (bulletPrefab, spawnPoint.position, spawnPoint.rotation * coneRandomRotation) as GameObject;
var bullet : SimpleBullet = go.GetComponent.<SimpleBullet> ();
lastFireTime = Time.time;
// Find the object hit by the raycast
var hitInfo : RaycastHit = raycast.GetHitInfo ();
if (hitInfo.transform) {
// Get the health component of the target if any
var targetHealth : Health = hitInfo.transform.GetComponent.<Health> ();
if (targetHealth) {
// Apply damage
t