Как реализовать прилипание к потолку и стенам и отталкивание

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

Как реализовать прилипание к потолку и стенам и отталкивание

Сообщение Moriss 08 мар 2019, 13:35

Делаю Аркаду, В Unity, где персонаж может прыгать со стены на стену, и с потолка на пол!
Мне с помощью урока по гравитации удалось, его заставить на пробел прыгать с потолка на пол и обратно, но как реализовть чтобы это происходило по кнопкам, и как сделать чтобы онтакже прыгал со стены на стену, прямо а не под углом?
Вот пример как должно быть!
https://yapx.ru/v/DjGIq Обект летит до возможного упора, прилипает и после нажатия клавиши, например влево лител в том направлении!

А вот как сейчас!
https://yapx.ru/v/DjGKW

Вот код!
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Playerv2 : MonoBehaviour
{

    // Movement Speed
    public float speed = 30;
    public Transform groundCheck;
    public float groundCheckRadius = 0.3f;
    public LayerMask  whatIsGround;

    Rigidbody2D rb2d;
    Animator _anim;

    private void Awake ()
    {
        rb2d = GetComponent<Rigidbody2D> ();
    }

    private void Start ()
    {
        rb2d.gravityScale = 150f;
    }

    private void Update ()
    {
        // Гравитационные изменения
        if (Input.GetKeyDown (KeyCode.Space) && isGrounded ())
        {
            rb2d.gravityScale *= -1;
            transform.Rotate (0, 180, 180);
        }    
    }

    void FixedUpdate ()
    {
        // Горизонтальное движение
        float h = Input.GetAxisRaw("Horizontal");
        rb2d.velocity = Vector2.right * h * speed;        
    }
    public bool isGrounded ()
    {
        var collider = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);

        return collider != null;
    }
    void OnCollisionEnter2D (Collision2D co)
    {
        // Collided with a V?
        if (co.collider.name == "V")
        {
            // Reset Rotation, Gravity, Velocity and go to last Checkpoint
            transform.rotation = Quaternion.identity;
            rb2d.gravityScale = Mathf.Abs (rb2d.gravityScale);
            rb2d.velocity = Vector2.zero;
        }
    }
    private void OnDrawGizmosSelected ()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere (groundCheck.position, groundCheckRadius);
    }
}

 


Надеюсь на вашу помощь а не критику, искал и в Яндексе и Google, но подходящего мне ответа не нащел, а костыли приводят к ошибкам! Толь ответа нормального нет, толь я вопрос не коректно задавал!
Moriss
UNец
 
Сообщения: 1
Зарегистрирован: 08 мар 2019, 12:48

Re: Как реализовать прилипание к потолку и стенам и отталкивание

Сообщение MorfixProton 09 мар 2019, 20:28

А нельзя гравитацию выставить равной 0, а к персу прикладывать постоянную силу и эту силу уже направлять куда душе угодно?
MorfixProton
UNITрон
 
Сообщения: 197
Зарегистрирован: 18 окт 2015, 11:37


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

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

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