纯粹 "子弹" 的话. 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
targetHealth.OnDamage (damageP
Unity 制作子弹的策略与技巧

本文总结了在Unity中创建子弹的各种方法。对于快速直线飞行的子弹,可以使用射线检测和伤害效果;而对于慢速或曲线轨迹的子弹,使用Collider进行实时碰撞更合适。遇到的问题包括物理同步、穿透物体和碰撞响应。通过调整Rigidbody属性、设置IsKinematic和动态调整Collider大小,可以解决这些问题,实现理想中的子弹行为。
最低0.47元/天 解锁文章
2830

被折叠的 条评论
为什么被折叠?



