Пятница, 15 Ноября 2024, 04:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Персонаж не прыгает
DekSterДата: Суббота, 29 Сентября 2018, 17:29 | Сообщение # 1
был не раз
Сейчас нет на сайте
Написал код для того чтобы персонаж прыгал после одного нажатия вот часть фрагмента из за которого персонаж больше не пргыает (if (isGrounded && Input.GetButtonDown ("Jump")) Jump()), как можно исправить проблему?
Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Character : MonoBehaviour {

    [SerializeField]
    private int lives = 3;
    [SerializeField]
    private float speed = 3.0F;
    [SerializeField]
    private float jumpForce = 15.0F;

    private bool isGrounded = false;

   
    new private Rigidbody2D rigidbody;
    private Animator animator;
    private SpriteRenderer sprite;

    private void Awake()
    {
    rigidbody = GetComponent<Rigidbody2D>();
    animator = GetComponent<Animator>();
    sprite = GetComponentInChildren<SpriteRenderer>();
    }

    private void FixedUpdate()
    {
        CheckGround();
    }

    private void Update()
    {
  if (Input.GetButton ("Horizontal")) Run();
        if (isGrounded && Input.GetButtonDown ("Jump")) Jump();
    }

    private void Run()
    {
    
  Vector3 direction = transform.right * Input.GetAxis ("Horizontal");    
  transform.position = Vector3.MoveTowards (transform.position, transform.position + direction, speed * Time.deltaTime);

        sprite.flipX = direction.x < 0.0F;

    }

    private void Jump()
    {

  rigidbody.AddForce (transform.up * jumpForce, ForceMode2D.Impulse);
    }

    private void CheckGround()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);

        isGrounded = colliders.Length > 1;
        
    }

    
}
RengДата: Суббота, 29 Сентября 2018, 23:00 | Сообщение # 2
был не раз
Сейчас нет на сайте
Может изменить строчку
Код
isGrounded = colliders.Length > 1;

на
Код
isGrounded = colliders.Length > 0;

Или сделать так.
Код
Collider2D[] colliders = Physics2D.OverlapCircleAll(new Vector3(transform.position.x, transform.position.y-0.5f, transform.position.z), 0.3F);
isGrounded = colliders.Length > 0;


Сообщение отредактировал Reng - Суббота, 29 Сентября 2018, 23:17
ArtemSДата: Среда, 03 Октября 2018, 16:33 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Тоже подумал что на >0 надо исправить, можно еще вместо коллайдера луч вниз пускать и искать объект с тегом "земля". А то ты и от стен будешь прыгать и от врагов и от всего

хуяк, хуяк и в продакшн
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг