прямая трансляция всегда возвращает истину - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь сделать прямую трансляцию, чтобы мой противник не упал с карты и не застрял на стенах. Если он обнаруживает край или стену, он переворачивается и начинает двигаться в другую сторону. Линейная трансляция для обнаружения краев работает очень хорошо, однако линейная трансляция, направленная влево (для обнаружения стен), всегда срабатывает, и я не знаю почему, поэтому враг просто переворачивает каждый кадр.

Мой скрипт:

public class Enemy1 : MonoBehaviour {

Rigidbody2D myBody;
Transform myTransf;
public LayerMask enemyMask;

float myWidth;
public float speed;

// Use this for initialization
void Start () {
    myTransf = this.transform;
    myBody = this.GetComponent<Rigidbody2D>();
    myWidth = this.GetComponent<SpriteRenderer>().bounds.extents.x;

}

// Update is called once per frame
void FixedUpdate () {
    // checking if theres any walls or edges, if so, flip
    Vector2 lineCastPos = myTransf.position - myTransf.right * myWidth;
    Debug.DrawLine(lineCastPos, lineCastPos + Vector2.down);
    bool isGrounded = Physics2D.Linecast(lineCastPos, lineCastPos + Vector2.down, enemyMask);
    Debug.DrawLine(lineCastPos, lineCastPos - myTransf.right.toVector2() *0.1f);
    bool isBlocked = Physics2D.Linecast(lineCastPos, lineCastPos - myTransf.right.toVector2() * 0.1f, enemyMask);
    RaycastHit2D hit = Physics2D.Linecast(lineCastPos, lineCastPos - myTransf.right.toVector2());

    if (!isGrounded || !isBlocked)
        {
        Vector3 currRot = myTransf.eulerAngles;
        currRot.y += 180;
        myTransf.eulerAngles = currRot;
        Debug.Log("Ray Hit: " + hit.point);
    }

    //moving left always
    Vector2 myVel = myBody.velocity;
    myVel.x = -myTransf.right.x * speed;
    myBody.velocity = myVel;

}

}

Примечание: журнал RayCastHit2D дает мне точку 0.0, 0.0 (выделена красной точкой на моем скриншоте), и там ничего нет, только основная камера. введите описание изображения здесь

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