Unity AddForce не толкает, но телепортируетсяC#

Место общения программистов C#
Ответить
Anonymous
 Unity AddForce не толкает, но телепортируется

Сообщение Anonymous »

Я хотел сделать сценарий на чертику в 2D -игре, но я столкнулся с проблемой, когда меня телепортировали на очень маленькое расстояние (если моя скорость приборной панели была 13000, я был бы перемещен на пару сантиметров), я попытался поставить линейную скорость вместо сценария Addforce, но мой персонаж отказался двигаться, как я хотел, он просто ходил в сценарию движения. Я хотел сделать черту, как в Селесте, где меня подтянут, и физика будет продолжать играть.

Код: Выделить всё

public float runSpeed = 0.3f;
public float jump = 3f;
public byte a = 0;
private bool isdashing;
private bool candash = true;
private int dash = 13000;
private byte cddash = 2;
private float timedash = 1f;

private Rigidbody2D rigidbody;
public Animator animator;
[SerializeField] private SpriteRenderer sr;

private void Start()
{
rigidbody = GetComponent();
sr = GetComponent();
}
private void Update()
{
jumper();
if (Input.GetKeyDown(KeyCode.LeftAlt) && candash)
{
StartCoroutine(Dash());
}

animator.SetFloat("Speed", Mathf.Abs(Input.GetAxis("Horizontal") * runSpeed));

if (Input.GetAxis("Horizontal") < 0)
{
sr.flipX = true;
}
else if (Input.GetAxis("Horizontal") > 0)
{
sr.flipX = false;
}
if (a == 0)
{
animator.SetBool("jumping", true);
}
else
{
animator.SetBool("jumping", false);
}
}
void FixedUpdate()
{
move();
if (isdashing)
{
return;
}
}

void move()
{
rigidbody.linearVelocity = new Vector2(Input.GetAxis("Horizontal") * runSpeed, rigidbody.linearVelocityY);
}
void jumper()
{
if (a > 0)
if (Input.GetKeyDown(KeyCode.Space))
{
rigidbody.AddForce(transform.up * jump, ForceMode2D.Impulse);
}

}

private void OnCollisionStay2D(Collision2D collision)
{
if (collision.gameObject.tag == "ground")
{
a = 1;
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.tag == "ground")
{
a = 0;
}
}
private IEnumerator Dash()
{
candash = false;
isdashing = true;
rigidbody.gravityScale = 0;
if (sr.flipX == true)
{
rigidbody.linearVelocity = new Vector2(0, 0);
rigidbody.AddForce(transform.right * dash * -1, ForceMode2D.Force);
}
else if (sr.flipX == false)
{
rigidbody.linearVelocity = new Vector2(0, 0);
rigidbody.AddForce(transform.right * dash, ForceMode2D.Force);
}
yield return new WaitForSeconds(timedash);
isdashing = false;
rigidbody.gravityScale = 3;
yield return new WaitForSeconds(cddash);
candash = true;
}
}

Подробнее здесь: https://stackoverflow.com/questions/797 ... -teleports
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»