首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单位:敌方物体通过背景边缘上的盒子碰撞

单位:敌方物体通过背景边缘上的盒子碰撞
EN

Stack Overflow用户
提问于 2019-10-05 19:24:41
回答 3查看 835关注 0票数 0

我正在开发一个简单的2D Unity游戏(如果这是一个愚蠢的问题,我非常不熟悉。)我的玩家可以通过与敌人的碰撞来吃掉他们。这很好用,因为我只是为敌人选择了"is trigger“组件,并在我的Player类中使用了以下代码:

代码语言:javascript
复制
    private void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("Hit detected");
        Destroy(other.gameObject);
        transform.localScale += new Vector3(x, y, z);
    }

然而,这意味着放置在我的背景图像边界周围的对撞机并不能阻止敌人。解决这个问题的最好方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2019-10-05 21:58:47

我不太明白你的问题。但是,您的碰撞似乎不起作用。因此,请记住,对于在游戏中实际发生的碰撞,您需要使用碰撞器,并且参与碰撞的两个元素中的一个需要具有刚体组件。

这将使物理在引擎中工作,这将触发不。要检查它是否正常工作,可以使用以下命令进行调试:

代码语言:javascript
复制
// called on collision
 void OnCollisionEnter2D(Collision2D col)
 {
      Debug.Log("OnCollisionEnter2D");
 }
票数 0
EN

Stack Overflow用户

发布于 2019-10-05 23:56:55

据我所知,你只想检测玩家和敌人之间的触发器,但你仍然希望这些触发器与场景中的物理物体碰撞,比如背景对撞机。

实现这一点的一种可能方法是,使用设置了触发器选项的碰撞器组件为player对象创建子对象,并将脚本附加到该对象以处理触发器。然后,使用层来分组你的玩家和敌人的对象,你可以取消检查他们之间的碰撞如下:编辑->项目设置->物理2D:“层碰撞矩阵”。

票数 0
EN

Stack Overflow用户

发布于 2019-10-06 03:20:33

你可以将脚本分配给任何敌人,在每一帧中检查与玩家的距离。然后,您可以取消选中“是触发器”

Vector2.Distance

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58247851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档