@Romanuss

Останавливается объект при нажатии кнопки 2 раза?

Здравствуйте, имеется проблема в AddForce.

На сцене имеется куб со скриптом и кнопки отвечающие за передвижение.
Проблема в том, что если нажать на одну и ту же кнопку еще раз, при касании стены объект больше не движется. Нажимать на другие кнопки бессмысленно.

Скрипт игрока:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public float speed;
    public static bool isForce;
    

    void Start()
    {
        isForce = true;
    }


    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.CompareTag("Wall"))
        {
            isForce = true;
        }

    }
}


Скрипт кнопок(ки):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AddForce : MonoBehaviour {

    public Vector2 direction;
    private Rigidbody2D rb;

	void Start ()
    {
        rb = GameObject.FindGameObjectWithTag("Player").GetComponent<Rigidbody2D>();
    }
	
    void FixedUpdate()
    {
        rb.AddForce(direction * Player.sp * Time.deltaTime, ForceMode2D.Impulse);
    }

	public void Force ()
    {
        if (Player.isForce == true)
        {
            Player.isForce = false;
            Player.sp = 0;
        }
	}
}


Скрины:
5c5432e35a144739947125.jpeg5c5432ecdb365035359308.jpeg
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 3
EreminD
@EreminD
Кое-что умею
скрипт кнопки очень похож на скрип игрока...
Ответ написан
MrMureno
@MrMureno Куратор тега Unity Game Engine
VR for all
void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.CompareTag("Wall"))
        {
            isForce = true;
        }


вы сбрасываете флаг "можно двигаться" только по старту колизии с чем либо.

если вы уперлись уже в "стену" то второго CollisionEnter не будет.
переделывайте логику))) или проверяйте еще дополнительно CollisionStay

или сбрасывайте флаг isForce по таймеру, или еще как. (но это костыли. в принципе надо пересмотреть вообще зачем так сделано и почему))
НО суть в общем надеюсь уловили.
Ответ написан
Noomank
@Noomank
Unity Developer C#
А зачем вам уничтожать вообще все объекты с заданными тегами?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы