2D физика рикошета не работает в Unity - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь создать игру, в которой мяч будет рикошетом от нескольких разных коллайдеров на экране.Основываясь на том, что я исследовал, я получил код, который поначалу казался осмысленным, но, похоже, не работал вообще.Я проверяю это, просто упав на двухмерный пол с прикрепленным к нему коллайдером.Однако, как только он сталкивается с полом, он просто останавливается и не возвращается назад.Я попытался отключить «Запуск запросов в коллайдерах» в настройках проекта и сместить исходную позицию RaycastHit2D, чтобы он не обнаруживал коллайдер, к которому он подключен, но он все еще не работал.Я не думаю, что RaycastHit2D вообще работает, потому что он даже ничего не отображает в консоли.Вот мой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyBehavior : MonoBehaviour {
    Rigidbody2D rigidbody;
    public Vector2 startPos;
    public float speed;
    public float hitOffset;
    Vector3 vector = new Vector3(0, 5,0); //used to offset origin point of RaycastHit2D hit

    private void OnEnable()
    {
        rigidbody = GetComponent<Rigidbody2D>();
        this.transform.position = startPos;
    }

    private void Update()
    {
        transform.Translate(Vector2.down * speed * Time.deltaTime);


        RaycastHit2D hit = Physics2D.Raycast(transform.position + vector, - transform.up, speed * Time.deltaTime + hitOffset);

        Debug.DrawRay(transform.position, -transform.up, Color.red);

        Ray2D ray = new Ray2D(transform.position, -transform.up);

        if (hit)
        {
            Debug.Log(speed * Time.deltaTime + hitOffset);
            Debug.Log(hit.collider.name);
            Vector2 reflectDir = Vector2.Reflect(ray.direction,hit.normal);

            float rotation = Mathf.Atan2(reflectDir.y, reflectDir.x) * Mathf.Rad2Deg;
            transform.eulerAngles = new Vector3(0, 0, rotation);
        }

    }

}

Моя математика плохая?Любая помощь очень ценится, спасибо.

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