Mail.ru
Почта
Мой Мир
Одноклассники
ВКонтакте
Игры
Знакомства
Новости
Календарь
Облако
Заметки
Все проекты
Все проекты
выход
Регистрация
Вход
Категории
Все вопросы проекта
Компьютеры, Интернет
Темы для взрослых
Авто, Мото
Красота и Здоровье
Товары и Услуги
Бизнес, Финансы
Наука, Техника, Языки
Философия, Непознанное
Города и Страны
Образование
Фотография, Видеосъемка
Гороскопы, Магия, Гадания
Общество, Политика, СМИ
Юридическая консультация
Досуг, Развлечения
Путешествия, Туризм
Юмор
Еда, Кулинария
Работа, Карьера
О проектах Mail
Животные, Растения
Семья, Дом, Дети
Другое
Знакомства, Любовь, Отношения
Спорт
Золотой фонд
Искусство и Культура
Стиль, Мода, Звезды
Полный список
Спросить
Лидеры
Поиск по вопросам
Ответы Mail
Программирование
Android
C/C++
C#
iOS
Java
JavaScript
jQuery
SQL
Perl
PHP
Python
Веб-дизайн
Верстка, CSS, HTML, SVG
Системное администрирование
Другие языки и технологии
Вопросы - лидеры.
Чем Луа лучше Пайтона и наоборот? Буду использовать в целях написания сценариев.
1 ставка
Лидеры категории
Лена-пена
Искусственный Интеллект
М.И.
Искусственный Интеллект
Y.Nine
Искусственный Интеллект
•••
Игрок проваливается сквозь землю в юнити 2d
Виталий Бойко
Ученик
(106), на голосовании
6 месяцев назад
Что делать?
скрипт земли:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ground : MonoBehaviour
{
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
Physics2D.IgnoreCollision(collision.collider, GetComponent<Collider2D>());
}
}
}
скрипт игрока:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
public float runSpeed = 10f;
public float jumpForce = 10f;
private bool isGrounded;
private Rigidbody2D rb;
private BoxCollider2D boxCollider;
void Start()
{
rb = GetComponent<Rigidbody2D>();
boxCollider = GetComponent<BoxCollider2D>();
}
void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
Vector2 movement = new Vector2(horizontalInput, rb.velocity.y);
if (Input.GetKey(KeyCode.LeftShift))
{
movement.x = runSpeed;
}
else
{
movement.x= speed;
}
if (Input.GetKeyDown(
KeyCode.Space
) && isGrounded)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}
rb.velocity = movement;
}
void FixedUpdate()
{
isGrounded = Physics2D.BoxCast(
boxCollider.bounds.center
, boxCollider.bounds.size, 0f, Vector2.down, 0.1f, LayerMask.GetMask("Ground"));
}
}
Голосование за лучший ответ
Лев Перфилов
Просветленный
(26074)
7 месяцев назад
Отключить скрипт земли.
Виталий Бойко
Ученик (106)
7 месяцев назад
не сработало
Лев Перфилов
Просветленный (26074) Виталий Бойко, Отключить скрипт земли, поставить на игрока любой Collider2D (например BoxCollider2D), обязательно без галочки is trigger, аналогично с землёй
Юрий Авдалимов
Ученик
(93)
7 месяцев назад
Включить колайдер и риджидбади. Либо же выключить риджидбади у игрока
Виталий Бойко
Ученик (106)
7 месяцев назад
уже был включен
Юрий Авдалимов
Ученик (93)
7 месяцев назад
Сфоткай компоненты у игрока
Юрий Авдалимов,
(я с другого акка)
Похожие вопросы
скрипт земли:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ground : MonoBehaviour
{
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
Physics2D.IgnoreCollision(collision.collider, GetComponent<Collider2D>());
}
}
}
скрипт игрока:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
public float runSpeed = 10f;
public float jumpForce = 10f;
private bool isGrounded;
private Rigidbody2D rb;
private BoxCollider2D boxCollider;
void Start()
{
rb = GetComponent<Rigidbody2D>();
boxCollider = GetComponent<BoxCollider2D>();
}
void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
Vector2 movement = new Vector2(horizontalInput, rb.velocity.y);
if (Input.GetKey(KeyCode.LeftShift))
{
movement.x = runSpeed;
}
else
{
movement.x= speed;
}
if (Input.GetKeyDown( KeyCode.Space ) && isGrounded)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}
rb.velocity = movement;
}
void FixedUpdate()
{
isGrounded = Physics2D.BoxCast( boxCollider.bounds.center , boxCollider.bounds.size, 0f, Vector2.down, 0.1f, LayerMask.GetMask("Ground"));
}
}