Не правильная работа Vector2.Reflect, или же моя.

Программирование на Юнити.

Не правильная работа Vector2.Reflect, или же моя.

Сообщение Music_Box 16 апр 2022, 13:09

Доброго времени суток. В Unity совсем недавно начал разрабатывать что-то интересное, нежели просто попробовать, но не суть.
Я хочу сделать так, чтобы мой объект отталкивался от стены, словно попрыгунчик. Начала искать решение и наткнулся на Vector2.Reflect. Вполне себе понятная вещь, но почему что она мне не поддается. После столкновения со стеной объект просто к ней прилипает. Можете выругать меня всеми словами, если хотите, но может быть я что-то упустил? Вот код:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;

public class GameScript : MonoBehaviour
{
    public Rigidbody2D coon;
    public float jumpforce;
    public bool arrowCheck = false;
    public Animation arrow;
    public Animation circle;
    public RectTransform Side;
    public Transform CircleSide;
    public Vector2 LastVelocity;

    private void Update()
    {
        if (Input.GetMouseButtonDown(0) && arrowCheck==false)
        {
            arrowCheck = true;
            coon.AddForce(CircleSide.right * jumpforce);
            arrowCheck = true;
            arrow.Stop();
            circle.Stop();
            LastVelocity = coon.velocity;

        }
    }
    private void OnCollisionEnter2D(Collision2D coll)
    {
        Vector2 direction = Vector2.Reflect(LastVelocity, coll.contacts[0].normal);
        coon.AddForce(direction*jumpforce);
        Debug.Log("Yeeee Collision");
    }
}
 


И еще я замечаю в видео постоянное использование GetComponent<RigidBody2d>() например. Это обязательная команда? И для чего она?
Music_Box
UNец
 
Сообщения: 9
Зарегистрирован: 16 апр 2022, 13:00

Re: Не правильная работа Vector2.Reflect, или же моя.

Сообщение Alkos26Rus 16 апр 2022, 13:39

тебе наверно лучше использовать coon.velocity = ; нежели coon.AddForce, так как это больше подойдет для такой цели, AddForce не изменит координально направление а лишь добавит силу, поэтому и получается что шарик либо замедляется либо останавливается.

Music_Box писал(а):И еще я замечаю в видео постоянное использование GetComponent<RigidBody2d>() например. Это обязательная команда? И для чего она?

Нет, ссылкой на RigidBody как у тебя лучше
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Не правильная работа Vector2.Reflect, или же моя.

Сообщение Music_Box 17 апр 2022, 13:16

Alkos26Rus писал(а):тебе наверно лучше использовать coon.velocity = ; нежели coon.AddForce, так как это больше подойдет для такой цели, AddForce не изменит координально направление а лишь добавит силу, поэтому и получается что шарик либо замедляется либо останавливается.

Music_Box писал(а):И еще я замечаю в видео постоянное использование GetComponent<RigidBody2d>() например. Это обязательная команда? И для чего она?

Нет, ссылкой на RigidBody как у тебя лучше


Спасибо за то, что рассказали про последнее, но у меня даже с velocity ничего не отталкивается.
Синтаксис:
Используется csharp
 
void OnCollisionEnter2D(Collision2D coll)
    {
       
        var isNormal = coll.contacts[0];
        var direction = Vector2.Reflect(LastVelocity.normalized, isNormal.normal).normalized;
        coon.velocity = direction*Speed;
       
    }


Посмотрел еще пару видосов, код одинаковый у всех, работает у всех одинаково, но всё равно эта зараза не отталкивается.
Music_Box
UNец
 
Сообщения: 9
Зарегистрирован: 16 апр 2022, 13:00

Re: Не правильная работа Vector2.Reflect, или же моя.

Сообщение waruiyume 17 апр 2022, 13:24

Попробуйте в FixedUpdate скорость запоминать.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Не правильная работа Vector2.Reflect, или же моя.

Сообщение Music_Box 17 апр 2022, 13:37

waruiyume писал(а):Попробуйте в FixedUpdate скорость запоминать.


Проблему решил. Сместил скорость из условия. Спасибо за намёк!
Music_Box
UNец
 
Сообщения: 9
Зарегистрирован: 16 апр 2022, 13:00


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5