嘿,我正在尝试用简单的代码射击 我有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方法,并且当调用它的方法向我展示时,对象引用未设置为该对象的实例。 我也将对象拖放到必需的公共变量中 团结一致,但为什么它不起作用?
对不起我的英语不好的人。
答案 0 :(得分:0)
确保在“玩家移动等级”中分配了“ bc”。
我会在玩家移动课程中做类似的事情。
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0) && haveGlock == true)
{
BulletCollision bc = Instantiate(bulletPrefab, bulletPos, Quaternion.identity);
bc.shoot();
AudioSource.PlayOneShot(GlockClip);
}