SpriteRenderer rend;
rend.sortingOrder = (int)(transform.position.y*-10f);
private void Start()
{
anim = GetComponent();
rb = GetComponent();
}
anim = GetComponent<Animator>();
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Rigidbody2D _rb2d;
[Header("MovemengSetting")]
[SerializeField] private float _speed=4f;
[SerializeField] private float _jumpPower = 3f;
private float _inputX;
private bool _isGrounded;
[Header("GroundSetting")]
[SerializeField] Transform _feetPos;
[SerializeField] float _checkRad;
[SerializeField] LayerMask _groundMask;
private Animator _animator;
private SpriteRenderer _spRend;
private void Start()
{
_rb2d = GetComponent<Rigidbody2D>();
_animator = GetComponent<Animator>();
_spRend = GetComponent<SpriteRenderer>();
}
private void Update()
{
InputRead();
PlayerFlip();
AnimatorUpdate();
}
private void AnimatorUpdate()
{
_animator.SetBool("isRunning",_inputX!=0);
_animator.SetBool("isJumping", _isGrounded);
}
private void InputRead()
{
_inputX = Input.GetAxis("Horizontal");
if (Input.GetKeyDown(KeyCode.Space)) TryJump();
}
private void TryJump()
{
if (_isGrounded) _rb2d.linearVelocityY=_jumpPower;
}
void PlayerFlip()
{
_spRend.flipX = _inputX < 0;
}
private void FixedUpdate()
{
_isGrounded=IsGround();
Movement();
}
bool IsGround() => Physics2D.OverlapCircle(_feetPos.position, _checkRad, _groundMask);
void Movement()
{
_rb2d.linearVelocityX = _inputX * _speed;
}
#if UNITY_EDITOR
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawSphere(_feetPos.position, _checkRad);
}
#endif
}
private void Update()
{
if(Input.GetMouseButtonDown(0))_system.gameObject.SetActive(true);
if (_system.gameObject.activeSelf) Debug.LogError("Enable");
}
rb = GetComponent(); //какой?
rb = GetComponent<Rigidbody2D>(); // надо
moveInput = Input.GetAxis("Horizontal");
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Rigidbody2D _rb2d;
[SerializeField] private float _speed=2f;
private float _inputX;
private Vector2 _moveDir;
private void Start()
{
_rb2d = GetComponent<Rigidbody2D>();
}
private void Update()
{
_inputX = Input.GetAxis("Horizontal");
}
private void FixedUpdate()
{
_moveDir = transform.right * _inputX;
//_moveDir.y = _rb2d. linearVelocity.y // падение и прыжек пока выкл
_rb2d.linearVelocity= _moveDir*_speed;
}
}
public class Player:MonoBehaviour //скрипт игрока
{
public void Something() //метод в игроке который что то делает
{
}
}
public class TriggerZone : MonoBehaviour // скрипт на зоне
{
private void OnTriggerEnter(Collider other) // стандартный метод для триггера на вход объекта
{
if(other.TryGetComponent(out Player player)) //проверка что обьект содержит скрипт
{
player.Something(); //вызов метода из скрипта
}
}
}
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);
}
}