Unity2D проблемы с raycast - PullRequest
       1

Unity2D проблемы с raycast

1 голос
/ 25 июня 2019

Я играю в матч-3, и для того, чтобы разбить конфеты, я использовал Raycast, но когда я пытаюсь показать, сколько конфет разбил игрок, он показывает на одну меньше, чем ожидалось.

private List<GameObject> FindMatch(Vector2 direction)
    {
        List<GameObject> matchingCandies = new List<GameObject>();
        RaycastHit2D hit = Physics2D.Raycast(this.transform.position, direction);
        while(hit.collider != null && hit.collider.GetComponent<SpriteRenderer>().sprite == spriteRenderer.sprite) {
            matchingCandies.Add(hit.collider.gameObject);
            hit = Physics2D.Raycast(hit.collider.transform.position, direction);
        }

        return matchingCandies;
    }

    private bool ClearMatch(Vector2[] directions)
    {
        List<GameObject> matchingCandies = new List<GameObject>();

        foreach(Vector2 direction in directions) {
            matchingCandies.AddRange(FindMatch(direction));
        }
        if(matchingCandies.Count >= BoardManager.MinCandiesToMatch) {
            foreach(GameObject candy in matchingCandies){
                goalManager.CompareGoals(candy.GetComponent<SpriteRenderer>().sprite.ToString());
                goalManager.UpdateGoals();
    }
public class BlankGoal
{
    public int numberNeeded;
    public int numberCollected;
}

public class GoalManager : MonoBehaviour
{
    public BlankGoal[] levelGoals;

public void UpdateGoals()
    {
        for(int i = 0; i < levelGoals.Length; i++)
        {
            currentGoals[i].thisText.text = "" + levelGoals[i].numberCollected + "/" + levelGoals[i].numberNeeded;
            if(levelGoals[i].numberCollected >= levelGoals[i].numberNeeded)
            {
                goalsCompleted++;
                currentGoals[i].thisText.text = "" + levelGoals[i].numberNeeded + "/" + levelGoals[i].numberNeeded;
            }
        }
    }

    public void CompareGoals(string goalToCompare)
    { 
        for(int i = 0; i < levelGoals.Length; i++)
        {
            if(goalToCompare == levelGoals[i].matchValue)
            {
                levelGoals[i].numberCollected++;
            }
        }
    }

Когда я разбиваю 3 конфеты, выбирается число 2, если я ломаю 4 - 3 и т. Д.

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