如何使用Physics2D.OverlapCircle进行条件响应?

时间:2016-03-14 03:40:01

标签: c# unity3d

我正在尝试使用Physics2D.OverlapCircle()进行条件响应。以下是我正在使用的代码。基本上说,如果重叠是一个名为"平台"设置接地为真。

public bool grounded;  //true or fals if you are grounded
public Transform groundCheck; //Object which will check if we are grounded


float groundRadius = .2f;  //Radius around ground check object will check if grounded
public LayerMask platform; //Decide which layers count as grounded.


void FixedUpdate()
{
    grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, platform);
}

在这种情况下true == Jump

if (grounded == true)
{
   //jump
}

但我并不总是希望它跳起来。例如,如果图层是" Ground"我不想让它跳起来。

如果图层是"平台"我确实希望它跳起来。

我无法弄清楚如何指定哪个图层重叠并执行不同的操作。

1 个答案:

答案 0 :(得分:0)

那很有效!这是答案。我只需要在检查器中设置图层,按照我想要的方式运行。

public bool platformTouch;  //true or false if touching platform
public Transform groundCheck; //Object which will check if we are grounded

public bool groundedTouch; //true or false if touching ground
public LayerMask ground; //Decide which layers count as grounded.


float groundRadius = .2f;  //Radius around ground check object will check if grounded
public LayerMask platform; //Decide which layers count as grounded.


void FixedUpdate()
{
    platformTouch = Physics2D.OverlapCircle(groundCheck.position, groundRadius, platform);

    groundedTouch = Physics2D.OverlapCircle(groundCheck.position, groundRadius, ground);
}