Мне с помощью урока по гравитации удалось, его заставить на пробел прыгать с потолка на пол и обратно, но как реализовть чтобы это происходило по кнопкам, и как сделать чтобы онтакже прыгал со стены на стену, прямо а не под углом?
Вот пример как должно быть!
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);
}
}
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, но подходящего мне ответа не нащел, а костыли приводят к ошибкам! Толь ответа нормального нет, толь я вопрос не коректно задавал!