using UnityEngine.SceneManagement;
static public class SceneWalker //как пример что бы не создавать обьект со скриптом
{
static public void SceneChanger(string sceneName,int sceneNumber =-1) // создаем метод перехода по имени или номеру сцены
{
if (sceneNumber>=0) SceneManager.LoadScene(sceneName);
else SceneManager.LoadScene(sceneName);
}
}
using UnityEngine;
public class SceneSelect : MonoBehaviour
{
void Start()
{
Invoke(nameof(LoadNewScene), 2f); // через 2 секунды запуск метода LoadNewScene()
}
void LoadNewScene()
{
Debug.Log("Loding");
SceneWalker.SceneChanger("Scene2",1); // обращаетмя к реализации SceneWalker для загрузки новой сцены тут или имя или порядок
}
}
[SerializeField]GameObject box; //обьект с анимацией
Animator _animator; // аниматор что содержит анимацию
void Start()
{
_animator = box.GetComponent<Animator>(); // получаем с обьекта компонент
float animTime = _animator.GetCurrentAnimatorStateInfo(0).length; // получаем время воспроизведения анимации
Invoke(nameof(LoadNewScene), animTime+0.1f); // запускам переход метод перехода на другую сцену через время анимации +0.1 сек
}
using UnityEngine;
public class SceneSelect : MonoBehaviour
{
public void LoadNewScene()
{
Debug.Log("Loading");
SceneWalker.SceneChanger("Scene2",1);
}
}
GameObject _screenbuttor; //элемент UI с подсказкой для открытия двери
LayerMask _doorMask;//маска двери
private void Update()
{
Transform cam = Camera.main.transform; // откуда пускаем луч будет просто камера
RaycastHit hitInfo; //информация о попадание луча
if (Physics.Raycast(cam.position,cam.forward,out hitInfo, 10f,_doorMask))
{
Debug.Log("hit work"); //проверка что все работает
_screenbuttor.SetActive(true); // подсказку активной
}
else
{
_screenbuttor.SetActive(false);
}
if (_screenbuttor.activeSelf && Input.GetKeyDown(KeyCode.E)) //если подсказка активна и нажата кнопка E
{
Debug.Log("Door Interactive"); // проверяем что все сработало
hitInfo.collider.GetComponent<Door>().InteractingDoor(); // вызываем метод для работы с дверью
}
using UnityEngine;
public class Door : MonoBehaviour
{
[SerializeField] bool _isOpen;
// public bool isOpen=> _isOpen;
public void InteractingDoor()
{
Debug.Log("Use Door Interact"); // проверяем что перешли в другой скрипт
if (_isOpen) CloseDoor();
else OpenDoor();
}
void CloseDoor()
{
Debug.Log("Close Door"); //проверяем что включился метод для закрытия двери
//Ну тут действия для закрытия
}
void OpenDoor()
{
Debug.Log("Open Door"); //проверяем что включился метод для открытия двери
//Тут действия для открытия
}
}
public void SetTarget(Transform target)
{
player = target;
}
GameObject newEnemy = Instantiate(_enemy.gameObject);
newEnemy.GetComponent<Enemy>().SetTarget(_player.transform);
Transform player == (Player)pl.gameObject.transform
Transform enemy ==this.transform == enemyObject.transform
void Spawner(Transform spawnPos)
{
RaycastHit[] hits= Physics.SphereCastAll(spawnPos.position, Radius, spawnPos.up, 2f, _enemymask, QueryTriggerInteraction.UseGlobal);
if (hits.Length > 0) return;
GameObject enemy = Instantiate(_enemy.gameObject, spawnPos);
}
Vector2 _moveDir;
Rigidbody2D _rb;
[SerializeField] float _speed=5f;
bool _blockMoveUpdate;
void Start()
{
_rb = GetComponent<Rigidbody2D>();
ShootUpdate(transform.right);
}
private void ShootUpdate(Vector2 newDir)
{
_moveDir = newDir.normalized;
_rb.velocity = _moveDir*_speed;
if(_blockMoveUpdate)_blockMoveUpdate = false;
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (!_blockMoveUpdate)
{
_blockMoveUpdate = true;
var coll = collision.contacts[0];
Vector2 newMove = Vector2.Reflect(_rb.velocity.normalized, coll.normal);
ShootUpdate(newMove);
}
}
Camera _mCam;
Vector2 _mousePos;
[SerializeField] ContactFilter2D _filders;
RaycastHit2D[] _hits;
LineRenderer _lineRenderer;
private void Start()
{
_mCam=Camera.main;
_hits=new RaycastHit2D[1];
_lineRenderer = gameObject.AddComponent<LineRenderer>();
_lineRenderer.widthMultiplier = 0.2f;
_lineRenderer.positionCount = 3;
}
private void Update()
{
Vector2 mousePos = _mCam.ScreenToWorldPoint(Input.mousePosition);
if(Physics2D.Linecast(transform.position, mousePos, _filders, _hits)>0)
{
_lineRenderer.enabled = true;
_lineRenderer.SetPosition(0, transform.position);
_lineRenderer.SetPosition(1, _hits[0].point);
Vector2 v2= _hits[0].point- (Vector2)transform.position; // делаю вектор направления
_lineRenderer.SetPosition(2, v2*_hits[0].normal); // умножаю вектор направления на нормаль
}
else
{
_lineRenderer.enabled = false;
}
}
using System.IO;
....
string _name;
public void SaveState()
{
var json = JsonUtility.ToJson(this);
File.WriteAllText(Application.persistentDataPath + $"{_name}.so",json);
}
public void LoadState()
{
var json = File.ReadAllText(Application.persistentDataPath + $"{_name}.so");
JsonUtility.FromJsonOverwrite(json, this);
}
//public static List listName = new List();
public static List<char> listName = new List<char>(); //тут можно даж var listName = new List<char>();
//var Array.....
char[] Array....