Unity 2018.2.8f1
Проблема котрую очень долго пытаюсь исправить но ничего не помогает! Знаю такие вопросы уже были но они мне тоже не помогли. При прыжке персонажа в вохдухе данный персонаж будет подпрыгивать в воздухе пока нажимаешь пробел. Как сделать так чтобы персонаж не прыгал в воздухе, а прыгал только от земли. Решил сделать при помощи Raycast. Но написав скрипт галочка напротив Is Ground не появляется, и персонаж продолжает прыгать в воздухе. Как решить эту проблему?
Вот весь скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class nero : MonoBehaviour
{
Rigidbody2D rb;
Animator anim;
int Life = 100;
public int jumpForce;
public bool IsGround;
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
jump();
}
if (Input.GetAxis("Horizontal") == 0)
{
anim.SetInteger("Lop", 1);
}
else {
Jump();
Flip();
anim.SetInteger("Lop", 2);
}
}
void OnTriggerEnter2D(Collider2D shit)
{
if (shit.gameObject.tag == "life")
{
Life++;
Destroy(shit.gameObject);
}
if (shit.gameObject.tag == "Finish")
Application.LoadLevel("Scene2");
}
void OnCollisionEnter2D(Collision2D shit)
{
if (shit.gameObject.tag == "swes")
{
//Invoke("ReloadFuckingLevel", 3);
Life--;
}
}
void OnGUI()
{
GUI.Box(new Rect(0, 0, 100, 30), "Life = " + Life);
}
void ReloadFuckingLevel()
{
Application.LoadLevel(Application.loadedLevel);
}
void Flip()
{
if (Input.GetAxis("Horizontal") < 0) transform.localRotation = Quaternion.Euler(0, 0, 0);
if (Input.GetAxis("Horizontal") > 0) transform.localRotation = Quaternion.Euler(0, 180, 0);
}
void FixedUpdate()
{
rb.velocity = new Vector2(Input.GetAxis("Horizontal") * 8f, rb.velocity.y);
}
void jump()
{
rb.AddForce(transform.up * 13f, ForceMode2D.Impulse);
if (Input.GetKeyDown(KeyCode.Space))
{
GetComponent<Rigidbody2D>().AddForce(Vector2.up * 300);
}
}
public void Jump()
{
Ray ray = new Ray(gameObject.transform.position, Vector3.down);
RaycastHit rh;
if (Physics.Raycast(ray, out rh, 0.5f))
{
IsGround = true;
}
else {
IsGround = false;
}
if (Input.GetKeyDown(KeyCode.Space) && IsGround)
{
rb.AddForce(Vector3.up * jumpForce);
}
}
}