Unity 子弹移动以及碰撞条件

一、子弹移动

游戏物体移动最主要的是获取一个刚体组件,再对这个刚体组件添加一个向前的力;

具体代码:

public class BulletCtrl : MonoBehaviour
{
    public int damage = 20;
    public float speed = 1000.0F;

    void Start()
    {
        GetComponent<Rigidbody>().AddForce(transform.forward * speed);
    }
}

二、设置物理引擎属性

       Edit--->Project Settings--->Physics--->Physics Manager。

三、Collider组件

       Box Collider、Sphere Collider、Capsule Collider、Mesh Collider、Wheel Collider、Terrain Collider。

四、碰撞感知条件

        1)两个碰撞物体必须都有Collider组件

        2)其中移动物体还必须有Rigidboby组件

        最后补充一点:触发器是碰撞体的一个属性,如果进行触发检测,就可以实现穿透。

五、Tag应用

       Add Tag

      具体代码:

public class WallCtrl : MonoBehaviour
{
    void OnCollisionEnter(Collision coll)
    {
        if (coll.collider.tag == "BULLET")
        {
            Destroy(coll.gameObject);
        }
    }
}

如果检查到标签为bullet,则销毁游戏对象。

六、获取子弹位置

public class MyGizmo : MonoBehaviour
{
    public Color _color = Color.yellow;
    public float _radius = 0.1F;

    void OnDrawGizmos()
    {
        Gizmos.color = _color;
        Gizmos.DrawSphere(transform.position, _radius);
    }
}

七、子弹发射

public class FireCtrl : MonoBehaviour
{
    public GameObject bullet;
    public Transform firePos;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Fire();
        }
    }

    void Fire()
    {
        CreateBullet();
    }

    void CreateBullet()
    {
        Instantiate(bullet, firePos.position, firePos.rotation);
    }
}
原文地址:https://www.cnblogs.com/Optimism/p/10745346.html