Unity 2D два круга коллайдер - PullRequest
0 голосов
/ 04 октября 2019

Я новичок в Unity и пытаюсь написать 2D-программу, в которой у меня есть несколько кругов на экране, и они меняют направление каждый раз, когда сталкиваются с другим кругом или полем.

Вот код, который я написал, когда круг сталкивается с полем, в методе Update:

transform.Translate(direction * speed * Time.deltaTime);
if (transform.position.y < GameManager.bottomLeft.y + radius && direction.y < 0)
{
    direction.y = -direction.y;
}
if(transform.position.y > GameManager.topRight.y - radius && direction.y > 0)
{
    direction.y = -direction.y;
}
if(transform.position.x < GameManager.bottomLeft.x + radius && direction.x < 0)
{
    direction.x = -direction.x;
}
if(transform.position.x > GameManager.topRight.x - radius && direction.x > 0)
{
    direction.x = -direction.x;
}

направление определяется как new Vector2(Random.value, Random.value) в Start методе. Сейчас я читаю в Интернете, что, если два круга встречаются, я могу реализовать поведение в

private void OnTriggerEnter2D(Collider2D collision)
{
    if(collision.tag == "Ball")
    {
    }  
}

Как я могу написать код, чтобы два круга меняли направление при столкновении?

1 Ответ

0 голосов
/ 04 октября 2019

Я не уверен, как вы определили direction, но это изменяет оба объекта direction при столкновении, если коллайдер помечен как Ball, однако, если вы пытаетесь сделать что-то более похожее на зеркальное движение, вы можетехочу что-то изменить с помощью вращения.

private void OnTriggerEnter2D(Collider2D collision)
{
    if(collision.tag == "Ball")
    {
        GameObject CollidedObject = collision.gameObject;
        CollidedObject.direction.x = -CollidedObject.direction.x;
        CollidedObject.direction.y = -CollidedObject.direction.y;
        this.direction.x = -this.direction.x;
        this.direction.y = -this.direction.y;
    }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...