Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает код в Юнити. Должен совершать прыжок, но его нет. На каком то моменте работал ,но сейчас перестал

Kamikot4 Ученик (175), на голосовании 8 месяцев назад
 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChartersMove : MonoBehaviour
{
[SerializeField] private float _speed;
[SerializeField] private float _jumpForce;
[SerializeField] private Vector3 _groundCheckOffset;
private Vector3 _input;
private bool _isMoving;
private bool _isGrounded;
LayerMask groundMask;

private Rigidbody2D _rigidbody;

private CharacterAnimations _animations;
[SerializeField] private SpriteRenderer _characterSprite;

private void Start()
{
_rigidbody = GetComponent();
_animations = GetComponentInChildren();
}

private void FixedUpdate() {
Move();
}
private void Update() {
Move();
if(Input.GetKeyDown(KeyCode.Space))
{
if(_isGrounded)
{
Jump();
_animations.Jump();
}
}
_animations.IsMoving = _isMoving;
_animations.IsFlying = IsFlying();
}
private bool IsFlying()
{
if(_rigidbody.velocity.y < 0)
{
return true;
}
else
{
return false;
}
}
private void CheckGround()
{
float rayLength = 0.3f;
Vector3 rayStartPosition = transform.position + _groundCheckOffset;
RaycastHit2D hit = Physics2D.Raycast(rayStartPosition, rayStartPosition + Vector3.down, rayLength, groundMask);
if (hit.collider != null)
{
_isGrounded = hit.collider.CompareTag("Ground") ? true : false;
}
else
{
_isGrounded = false;
}
}
private void Move()
{
_input = new Vector2(Input.GetAxis("Horizontal"), 0);
transform.position += _input * _speed * Time.deltaTime;
_isMoving = _input.x != 0 ? true : false;
if(_input.x != 0)
{
_characterSprite.flipX = _input.x > 0 ? false : true;
}
_animations.IsMoving = _isMoving;
}

private void Jump()
{
Debug.Log("Jump");
_rigidbody.AddForce(transform.up * _jumpForce, ForceMode2D.Impulse);
}
}
Голосование за лучший ответ
Ун‮ичт‮ожи‮тель‮‮Вопр‮о‮с‮ов‮3000 Мудрец (17501) 9 месяцев назад
Юнити скатился, что ты в нём делаешь?
Kamikot4Ученик (175) 9 месяцев назад
Как видишь,на данный момент ничего
Perman FetisovУченик (152) 9 месяцев назад
Кому как, он отлично подходит для создания игр и для обучения. Качество графики ничем не уступает анрилу если руки из правильного места растут. Я считаю это отличный движок и впринципе фреимворк для создания и визуализировать графики, причем бесплатный. Когда сделаете на нем игру с 200к+ онлайном и 200к$, обсудим насколько скатился движок)
temka game killer Мыслитель (7625) 9 месяцев назад
 Ну ты можешь например сделать так.

Это убрать


private void Jump()
{
Debug.Log("Jump");
_rigidbody.AddForce(transform.up * _jumpForce, ForceMode2D.Impulse);
}
А вместо того, чтобы совершать прыжок физикой просто по нажатию на кнопку Space
проигрывать анимацию прыжка "Jump" и всё. Убрать галочку loop

и напечатать

_animations.Jump(); и всё. У тебя персонаж физически не будет прыгать,
А просто визуально будет подпрыгивать анимацией.
Kamikot4Ученик (175) 9 месяцев назад
То есть коллайдер будет оставаться неподвижен?
temka game killerМыслитель (7625) 9 месяцев назад
Да именно так.
Похожие вопросы