unity3d 我怎样才能摧毁点时,它碰撞的球员,而不是反弹时,它碰撞

vh0rcniy  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(155)

我试图在游戏中,玩家在空中射击,并收集点与它碰撞。我希望我的球员摧毁点时,它与它碰撞。但是当播放器与它碰撞时,播放器只会弹开。
这是我的PointCollection脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PointColliection : MonoBehaviour
{
     
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Point"))
        {
            Destroy(other.gameObject);
        }
    } 
}

这是我的播放器脚本

using UnityEngine;

public class Player : MonoBehaviour
{
    [HideInInspector] 
        public Rigidbody2D rb;
    [HideInInspector]
        public CircleCollider2D col;

    [HideInInspector] public Vector3 pos { get { return transform.position; } }

    void Awake ()
    {
        rb = GetComponent<Rigidbody2D> ();
        col = GetComponent<CircleCollider2D> ();
    }

    public void Push (Vector2 force)
    {
        rb.AddForce (force, ForceMode2D.Impulse);
    }

    public void ActivateRb ()
    {
        rb.isKinematic = false;
    }

    public void DesactivateRb ()
    {
        rb.velocity = Vector3.zero;
        rb.angularVelocity = 0f;
        rb.isKinematic = true;
    }
}
5w9g7ksd

5w9g7ksd1#

您正在使用OnTriggerEnter2d函数,但您说游戏对象反弹玩家。这意味着你还没有设置对撞机触发。你也在检查点脚本中的碰撞,所以其他碰撞器的标签是Player而不是Point。
或者把这个放到播放器脚本里面

private void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.CompareTag("Point"))
    {
        Destroy(other.gameObject);
    }
}

相关问题