Mail.ru
Почта
Мой Мир
Одноклассники
ВКонтакте
Игры
Знакомства
Новости
Календарь
Облако
Заметки
Все проекты
Все проекты
выход
Регистрация
Вход
Категории
Все вопросы проекта
Компьютеры, Интернет
Темы для взрослых
Авто, Мото
Красота и Здоровье
Товары и Услуги
Бизнес, Финансы
Наука, Техника, Языки
Философия, Непознанное
Города и Страны
Образование
Фотография, Видеосъемка
Гороскопы, Магия, Гадания
Общество, Политика, СМИ
Юридическая консультация
Досуг, Развлечения
Путешествия, Туризм
Юмор
Еда, Кулинария
Работа, Карьера
О проектах Mail
Животные, Растения
Семья, Дом, Дети
Другое
Знакомства, Любовь, Отношения
Спорт
Золотой фонд
Искусство и Культура
Стиль, Мода, Звезды
Полный список
Спросить
Лидеры
Поиск по вопросам
Ответы Mail
Программирование
Android
C/C++
C#
iOS
Java
JavaScript
jQuery
SQL
Perl
PHP
Python
Веб-дизайн
Верстка, CSS, HTML, SVG
Системное администрирование
Другие языки и технологии
Вопросы - лидеры.
Проблема с коллайдером и триггером в Unity
1 ставка
Unity editor помогите с программой!
1 ставка
Лидеры категории
Лена-пена
Искусственный Интеллект
М.И.
Искусственный Интеллект
Y.Nine
Искусственный Интеллект
•••
Игрок проваливается сквозь землю в юнити 2d
Виталий Бойко
Ученик
(106), на голосовании
9 месяцев назад
Что делать?
скрипт земли:
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"));
}
}
Голосование за лучший ответ
Лев Перфилов
Просветленный
(33973)
10 месяцев назад
Отключить скрипт земли.
Виталий Бойко
Ученик (106)
10 месяцев назад
не сработало
Лев Перфилов
Просветленный (33973) Виталий Бойко, Отключить скрипт земли, поставить на игрока любой Collider2D (например BoxCollider2D), обязательно без галочки is trigger, аналогично с землёй
Юрий Авдалимов
Ученик
(93)
10 месяцев назад
Включить колайдер и риджидбади. Либо же выключить риджидбади у игрока
Виталий Бойко
Ученик (106)
10 месяцев назад
уже был включен
Юрий Авдалимов
Ученик (93)
10 месяцев назад
Сфоткай компоненты у игрока
Юрий Авдалимов,
(я с другого акка)
Похожие вопросы
скрипт земли:
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"));
}
}