可能碰撞不起作用?没有动静

问题描述 投票:0回答:1

仅当对象重叠时才尝试通过垂直轴创建运动。我基本上希望我的角色在能够爬上去之前被固定在墙上。

这是我的播放器代码,所有内容都编译时没有错误消息,只是没有任何移动。有时,如果我将玩家放置在墙内太深,然后点击播放,它就会将其推出,仅此而已。

这是我的代码:

public class Player : MonoBehaviour
{
    public GameObject wallRef;
    public Rigidbody2D rb;
    public GameObject wall1;
    public GameObject wall1RightBorder;
    private bool touchingWall = false;
    public float speed = 5f;
    
    //||
    void Start()
    {
        wall1 = wallRef.transform.Find("Wall1").gameObject;
        wall1RightBorder = wall1.transform.Find("wall1RightBorder").gameObject;
    }
    
    void Update()
    {
        if (touchingWall == true)
        {
            float verticalInput = Input.GetAxis("Vertical");
            rb.velocity = new Vector2(0f, verticalInput * speed);
        }
    }
    
    void OnCollisionStay2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("wall1RightBorder"))
        {
            touchingWall = true;
        }
    }
    
    void OnCollisionExit2D(Collision2D collision)
    {
         if (collision.gameObject.CompareTag("wall1RightBorder"))
         {
            touchingWall = false;
         } 
    }
}
c# collision-detection axis
1个回答
0
投票

尝试使用 OnCollisionEnter2D 而不是 OnCollisionStay2D。但我会使用 OnTriggerEnter2D、OnTriggerExit2D

© www.soinside.com 2019 - 2024. All rights reserved.