Столкновения в пользовательских задачах физики - PullRequest
0 голосов
/ 31 марта 2019

Я новичок в Unity.Как следует из названия, у меня возникают проблемы с получением коллизий прямо в моей игре.Я использую пользовательский физический скрипт из Unity: https://unity3d.com/learn/tutorials/topics/2d-game-creation/scripting-gravity?playlist=17093. В моей игре я испытываю трудности с отключением столкновений.

Например, когда я использую

Physics2D.IgnoreLayerCollision (8, 9);

Это ничего не меняет, и эти два символа все еще сталкиваются.Кроме того, по некоторым причинам триггеры ведут себя странно и все еще подвержены столкновениям.Подход к персонажу с триггерами заставит его всплыть.Я застрял на этом в течение длительного времени, и я очень признателен за помощь.

Стоит отметить, что я использую собственную физику и использую коробочный коллайдер 2d для определения дальности атаки и т. Д. Вотнекоторый код этого:

Collider2D attackbox = Physics2D.OverlapBox (attackPos.position, new Vector2 (attackRangeX, attackRangeY), 0, whatIsPlayer); 
if (attackbox != null && !isDead && characterController.isDead == false) {
    targetVelocity = Vector2.zero;
    animator.SetTrigger ("isPunching");
    timeBtwAtk = startTimeBtwAtk;
}

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

public void SetColliderIndex(int spriteNum)
{
    colliders[currentColliderIndex].enabled = false;
    currentColliderIndex = spriteNum;
    colliders[currentColliderIndex].enabled = true;
}

public void ClearColliderIndex()
{
    colliders[currentColliderIndex].enabled = false;
}

void OnTriggerEnter2D(Collider2D col)
{
    if (col.tag == "Player") 
    {
        col.GetComponent<CharacterController2D> ().TakeDamage (enemyDamage);
        col.GetComponent<CharacterController2D> ().canWait = false;
        col.GetComponent<CharacterController2D> ().canControl = false;
    }
}

Когда я использую Physics2D.IgnoreLayerCollision (8, 9);, я хочуоба указанных слоя не взаимодействуют вообще.Я не хочу никаких странных сдвигов или плавания, когда они проходят друг через друга.Также, когда я двигаю своего игрока против врага, я не хочу, чтобы он смог оттолкнуть его назад.Я хочу, чтобы это было так, как будто он врезался в стену.

1 Ответ

0 голосов
/ 04 апреля 2019

Я ответил что-то похожее на это здесь .Кроме того, если вы не хотите, чтобы игрок внезапно всплыл при столкновении, вы можете просто установить тип solidbody / hardbody2d на кинематический, но это означает, что физика не повлияет на объект.вам придется сделать это в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...