У меня проблема с анимацией пользовательского интерфейса с кнопками в единствеC#

Место общения программистов C#
Ответить
Anonymous
 У меня проблема с анимацией пользовательского интерфейса с кнопками в единстве

Сообщение Anonymous »

Я создаю игру под названием «Gravity Shifter», где игрок меняет гравитацию, чтобы завершить игру. При разработке основного меню я добавлял эффект, когда кнопки падают в три возможных направления (слева, справа или вниз) случайным образом каждый раз, когда начинается игра. Это предназначено для того, чтобы дать игрокам ощущение механики изменения гравитации игры с самого начала. Когда я впервые запускаю игру, все работает отлично - кнопки падают в случайных направлениях, как и ожидалось. Однако, нажав кнопку воспроизведения и некоторое время сыграть в игру, когда я выхожу обратно в главное меню, падающие анимации перестают работать. Кнопки просто остаются в своих позициях, а не снова падают. Полем Вот мой код:
emem> butonanimations.cs

Код: Выделить всё

using UnityEngine;

public class ButtonAnimations : MonoBehaviour
{
private Rigidbody2D rb;
private static Vector2 gravityDirection;  // Gravity yönü

private static bool gravitySet = false;  // Gravity sadece bir kere ayarlansın
private string WALL_TAG = "Wall";

private float startingSpeed = 200f;
private int gravityScale = 10;
private float gravity = 9.81f;
private float mass = 5f;

void Start()
{
Debug.Log("Start() ÇALIŞTI - Buton tekrar oluşturuldu");

rb = GetComponent();
rb.bodyType = RigidbodyType2D.Dynamic;
rb.gravityScale = gravityScale;
rb.interpolation = RigidbodyInterpolation2D.Interpolate;

rb.drag = 0.05f;
rb.angularDrag = 0.05f;

rb.mass = mass;

if (!gravitySet)
{
SetRandomGravityDirection();
gravitySet = true;
}

// Global gravity yönünü değiştiriyoruz
Physics2D.gravity = gravityDirection * gravity;

// Başlangıçta hız veriyoruz
rb.velocity = gravityDirection * startingSpeed;

Debug.Log("Başlangıç hızı verildi: " + rb.velocity);
Debug.Log("Yerçekimi yönü: " + gravityDirection);
}

void SetRandomGravityDirection()
{
int randomDir = Random.Range(0, 3);

switch (randomDir)
{
case 0: gravityDirection = Vector2.down; break;
case 1: gravityDirection = Vector2.left; break;
case 2: gravityDirection = Vector2.right; break;
}

Debug.Log("Yeni Gravity Yönü: " + gravityDirection);
}

void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag(WALL_TAG))
{
Debug.Log("Buton bir duvara çarptı ve durdu!");
rb.velocity = Vector2.zero;
}
}
}

, а также
mainmenu.cs
using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour
{
public void PlayGame()
{
Debug.Log("PlayGame() çağrıldı, sahne değiştiriliyor...");
SceneManager.LoadSceneAsync(1);
}

public void QuitGame()
{
Debug.Log("QuitGame() çağrıldı, oyun kapatılıyor...");
Application.Quit();
}
}
< /code>
Я пытался сбросить гравитацию, потому что он статичен, но опять же, это не работает. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... s-in-unity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»