После прыжка, персонаж зависает в воздухе

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

После прыжка, персонаж зависает в воздухе

Сообщение mzxdxd 04 июл 2018, 05:41

Здравствуйте, такая вот проблема:
После прыжка персонаж зависает в воздухе и очень очень медленно спускается на землю, но если зажаты кнопки влево или вправо персонаж нормально приземляется.
Подскажите пожалуйста в чем может быть проблема.
зависания появились после добавления анимации
скрипт в спойлере
Скрытый текст:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent (typeof(CharacterController))]
public class Controller : MonoBehaviour{

private CharterController pc;

void Start(){
pc = GetComponent<CharterController> ();
}

void Update() {
if (Input.GetButtonDown("Jump"))
{
pc.Jump();
}
pc.Move(Input.GetAxis("Horizontal"));
}
}

Скрытый текст:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// Движение перса лево+право, поворот перса лево+право
[RequireComponent(typeof(Rigidbody2D))]
public class CharterController : MonoBehaviour
{

public float runSpeed = 10f;
public float jumpForce = 10f;
public Transform cirTarg;
public float radCir = 5f;
private Rigidbody2D rb;
Animator anim;


void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}

bool isGround()
{
Collider2D[] gh = Physics2D.OverlapCircleAll(cirTarg.position, radCir);
int j = 0;
for (int i = 0; i < gh.Length; i++)
{
if (gh[i].gameObject != gameObject)
j++;
}
return j > 0;
}
void Update()
{
if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.LeftArrow))
{

anim.SetInteger("State", 1);
}

if (Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.LeftArrow))
{
anim.SetInteger("State", 0);
}
}

public void Jump()
{
if (isGround())
rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);

}
public void Move(float ax)
{
Vector3 direction = transform.right * ax;
transform.position = Vector3.Lerp(transform.position, transform.position + direction, runSpeed * Time.deltaTime);
if ((ax > 0 && transform.localScale.x < 0) || (ax < 0 && transform.localScale.x > 0))
transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
}
mzxdxd
UNец
 
Сообщения: 1
Зарегистрирован: 04 июл 2018, 05:36

Re: После прыжка, персонаж зависает в воздухе

Сообщение v319 06 июл 2018, 02:25

Попробуйте увеличить его "вес" в rigitbody.
Кроме того, возможно коллайдер врезается во что-то ( в терраин, в другой какой-то блок) и тормозит
Аватара пользователя
v319
UNIт
 
Сообщения: 88
Зарегистрирован: 10 мар 2014, 20:48

Re: После прыжка, персонаж зависает в воздухе

Сообщение 1max1 06 июл 2018, 05:21

Ты намешал в кучу много чего, контроллер, ригидбади, да и к тому же управление у тебя полу физическое полу обычным трансформом, выбери что-то одно например чисто ригидбади:
Синтаксис:
Используется csharp
rb.MovePosition(rb.position + direction * runSpeed * Time.deltaTime);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 25