【发布时间】:2020-09-06 03:12:24
【问题描述】:
我只是根据这个视频制作 2d 太空射击游戏。 (https://www.youtube.com/watch?v=2mNXfrh0UYo&t=2720s)我做了一个脚本,当敌人的弹丸与玩家飞船相撞时,通过研究玩家的标签来摧毁玩家的飞船,但是当我运行游戏时,玩家的飞船根本没有摧毁。 (我已经检查了玩家飞船上的标签,但是我已经在玩家飞船上放置了玩家标签。)我尝试将 Debug.Log 放在 OnCollisionEnter2D 方法中以查找错误的地方,但是当我尝试运行游戏时,我发现Player 的所有 OnCollisionEnter 函数的功能都不起作用(我也尝试将 BoxCollider2D 放在每个预制件上并打开“Is Trigger”来解决这个问题,但这不是正确的解决方案)。从这些事情来看,我遇到的问题可以说是我的代码中的 if 语句和研究标签功能根本不起作用。是否还有任何可能的问题以及解决这些问题的方法?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyProjectile : MonoBehaviour
{
public GameObject Projectile_Enemy;
public float speed;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Translate(new Vector3(0, -1 * speed * Time.deltaTime, 0));
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Player")
{
Destroy(collision.gameObject); // Problem Is here, this if statements doesn't work at all.
Debug.Log("test");
Destroy(Projectile_Enemy);
Debug.Log("Test");
}
if (collision.gameObject.tag == "Wall")
{
Destroy(Projectile_Enemy);
Debug.Log("TEST");
}
}
}
我使用的 Unity 版本是 Unity 2019 3 14,我使用 Microsoft Visual Studio 编辑我的代码。
【问题讨论】:
-
贴一张你的层次结构的图片,检查你的模型是否有刚体组件
标签: c# visual-studio unity3d if-statement tags