/
Veteread
/
Packer
Обзор
Документация
Войти
/
Veteread
/
Packer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Block.cs
70 строк
2 KB
Veteread
upload files
04 май 2025, 10:49
04 май 2025, 10:49
a5dcff3
Код
Авторство
О чём код?
using UnityEngine; [RequireComponent(typeof(Rigidbody2D))] public class Block : MonoBehaviour { [SerializeField] private BlockType type = BlockType.Standard; private PlayerBlockDropper controller; private Rigidbody2D rb; private bool isPlaced; public void Initialize(PlayerBlockDropper controller, bool withPhysics) { this.controller = controller; rb = GetComponent<Rigidbody2D>(); ConfigurePhysics(); if (withPhysics) EnablePhysics(); else DisablePhysics(); } private void ConfigurePhysics() { switch (type) { case BlockType.Heavy: rb.mass = 5f; break; case BlockType.Bouncy: rb.sharedMaterial = new PhysicsMaterial2D { bounciness = 0.8f, friction = 0.1f }; break; case BlockType.Sticky: rb.sharedMaterial = new PhysicsMaterial2D { bounciness = 0.1f, friction = 0.9f }; break; } } public void EnablePhysics() { rb.bodyType = RigidbodyType2D.Dynamic; isPlaced = false; } public void DisablePhysics() { rb.bodyType = RigidbodyType2D.Kinematic; rb.linearVelocity = Vector2.zero; } private void OnCollisionEnter2D(Collision2D collision) { if (!isPlaced && !collision.collider.CompareTag("Block")) { isPlaced = true; rb.linearVelocity = Vector2.zero; } } private void OnDestroy() { controller?.RemoveBlock(this); } }