如何在unity2D中移动和重新创建精灵?

时间:2019-04-10 12:32:55

标签: c# windows unity3d

嘿,我正在尝试用简单的代码射击 我有2个C#类,一个用于播放器动作,一个用于子弹

这是子弹碰撞课

void Start () {
    source.clip = clip;
    bullet = GetComponent<GameObject>();
    rb = GetComponent<Rigidbody2D>();
    bulletPos = player.position;
}

// Update is called once per frame
private void OnTriggerEnter2D(Collider2D wallCol)
{
    if (wallCol.gameObject.tag == "Wall")
    {
        Debug.Log("Wall Hited!");
        source.Play();
        Destroy(bulletPrefab,clip.length);
        if (bullet == null)
            Instantiate(bulletPrefab, bulletPos, Quaternion.identity);
    }
}
public void shoot()
{
    rb.velocity = rb.transform.right * bulletSpeed;
}

这是玩家移动课程:

void Update()
{

    if (Input.GetKeyDown(KeyCode.Mouse0) && haveGlock == true)
    {
        bc.shoot();
        AudioSource.PlayOneShot(GlockClip);
    }

}

我确实在另一个类上使用了hoot方法,并且当调用它的方法向我展示时,对象引用未设置为该对象的实例。 我也将对象拖放到必需的公共变量中  团结一致,但为什么它不起作用?

对不起我的英语不好的人。

1 个答案:

答案 0 :(得分:0)

确保在“玩家移动等级”中分配了“ bc”。

我会在玩家移动课程中做类似的事情。

void Update()
   {
    if (Input.GetKeyDown(KeyCode.Mouse0) && haveGlock == true)
    {
        BulletCollision bc = Instantiate(bulletPrefab, bulletPos, Quaternion.identity);
        bc.shoot();
        AudioSource.PlayOneShot(GlockClip);
    }