Как сделать чтобы объект не проходил сквозь стены в unity

Обновлено: 25.04.2024

Как сделать чтобы объект не проходил сквозь стены в unity

Quote ( lorenze )

не проще ли слегка увеличить колизийный объём у персонажа или у статической модели?


А вот это мягко говоря необдуманный совет.
В данном случае колайдер придеться раздуть до сферы и ГГ перестанет пролазить в двери. (они как известно имеют ограниченные размеры).
Иначе при наклоне вниз камера все равно смотрит сквозь стены.

Quote ( lorenze )

что за бред сивой кобылы? )


warr11r, предложил одно из реальных решений проблемы.
Кстати реально полезнее вашего совета.

заслуженный участник

Сейчас нет на сайте

Quote ( Левша )

А вот это мягко говоря необдуманный совет. В данном случае колайдер придеться раздуть до сферы и ГГ перестанет пролазить в двери. (они как известно имеют ограниченные размеры). Иначе при наклоне вниз камера все равно смотрит сквозь стены.


Зачем же до сферы? )
В ряде случаев хватит 30-50 см невидимого бардюра на стенах ) либо подобного выступа на колизийном объёме персонажа, так же контроль камеры важен.

Quote ( Левша )

warr11r, предложил одно из реальных решений проблемы. Кстати реально полезнее вашего совета.

почти ветеран

Сейчас нет на сайте

Quote ( lorenze )

скрипт по отталкиванию от стены само по себе глупость(он в таком случае через теже узкие двери также не пройдёт ), если уж так критичны моменты просвета, то надо работать камерой и слоями/группами рендеринга. Во вторых лишняя нагрузка лишними скриптами ) А кол-во объектов может быть и гигантским.


Я и не писал что это оптимально, но реально.

Quote ( lorenze )

В ряде случаев хватит 30-50 см невидимого бардюра на стенах

заслуженный участник

Сейчас нет на сайте

Quote ( Левша )

Я и не писал что это оптимально, но реально.


Именно о том и речь, какать можно и стоя на руках, но неудобно да и обгадится можно ))

Quote ( Левша )

Конкретно в unity, не поможет, если префаб наклонить вперед камера все равно провалится в стену, именно до сферы придеться наращивать.


Так зачем префаб наклонять, если можно управлять только камерой?)

Quote ( Левша )

Но это еще пол беды, пробоины пуль в воздухе висеть будут на расстоянии коллайдера, или все придеться усложнять, так что еще не известно чье предложение более геморное.

Персонаж проходит сквозь стену (Коллайдеры стоят) [дубликат]

Изначально использовал метод перемещения такой :прибавлял к *.position transform.forward/right. Но сейчас возникла проблема, иногда при "столкновении" с объектом я прохожу через стену. Главное предположение - тонкий коллайдер, т.е. у меня прибавление к позиции гораздо больше толщины, но возникает проблема другая, что нужно сделать, чтобы не возникала такая проблема. Вектор изменить не могу, т.к. скорость измениться, а толщину Коллайдера тоже, так как придётся переделывать некоторые модельки. Пробовал через AddForce, но мешает ускорение, так же пытался использовать *.velocity, но не могу одновременно идти, например, прямо и вправо.

Можете посоветовать другие способы передвижения(AWSD)?


28.3k 15 15 золотых знаков 48 48 серебряных знаков 113 113 бронзовых знаков задан 23 янв '19 в 12:58 13 3 3 бронзовых знака Здесь есть обьяснение как это делать правильно и почему: Почему при движении 2d персонажа через rb.velocity не используется Time.fixedDeltaTime? 23 янв '19 в 13:17 24 янв '19 в 8:29

Формально значения берутся со стрелочек или с штурвальчика на геймпаде и возможно с WASD -- но не уверен, а проверять влом. ( Input.GetAxis ("Horizontal"); ) от такого кода не будет постоянного ускорения как видно из официального видеопримера.

Изменение параметров указанных в ответе Stranger in the Q приведет к лишним затратам ресурсов. Это делать нежелательно. Но допустимо если движение изначально реализованы по-человечески, а не через "телепортацию", как в даном случае.

пытался использовать *.velocity, но не могу одновременно идти, например, прямо и вправо.

Через Volocity так же можно сделать движение и в том числе диагональное, как того хочется.

Уверяю, в интернете можно найти примеры. Вот код из головы который поддерживает бег по диагонали, который можно попробовать довести до толка:

Как сделать чтобы персонаж не проходил сквозь объект?

DanceM

Пройдите урок по работе с Collisions, лучше официальный, разберетесь, что к чему, и получите ответы на все вопросы. Сейчас Вы похоже совсем не понимаете, что происходит.

DanielMcRon

DanielMcRon @DanielMcRon

Move Position не для вас, скорее всего. Для 3д игр я вам советую Character Controller и его метод движения Move.
Для 2д игр движение в RigidBody с помощью velocity.

Move Position это такой метод,что не для управления персонажем и взаимодействия со стенами

Можно ли предотвратить прохождение кинематического объекта сквозь стены?

DanceM

Задача кинематического объекта двигаться игнорируя физику и при этом физически взаимодействуя с другими объектами, отталкивая их (не себя).

Получается ваш объект двигается вне физики, вручную, и вы сами получается считаете ему физику. Тогда вам надо учитывать в ваших рассчетах стены и препятствия.

Либо не делать его кинематическим, двигать используя физику в Rigidbody и отскакивать от стен манипулируя свойствами физического материала. Это будет физически правильно, сквозь стены проходить не будет, но надо всю схему управления пересоздать под управление физикой, а не писать саму "физику".

Как сделать чтобы персонаж не проходил сквозь стены в unity.

Коллайдер есть, благодаря ему квадрат стоит на этой структуре и не падает в пустоту, но он почему то проходит сквозь стены этой структуры.

Дополнен 1 месяц назад

Риджитбоди тоже есть.

Лучший ответ

добавь колайдер на стены и убери везде is trigger если стоит

Иван ГорбенкоУченик (167) 1 месяц назад

и везде где нужна твёрдая поверхность, добавляй колайдер

Yaroslav NesterovУченик (58) 1 месяц назад

персонаж проходит сквозь коллайдеры

Yaroslav Nesterov, добавь игроку коллайдер можно капсульный можно просто квадрат

Остальные ответы

Как ты его двигаешь?
Если через .transform - то ему будет плевать на коллайдеры. Если нет - проверь не включено ли в RigidBody IsKinematic.

Unity 2D Top-Down (Основы) Прозрачные стены.

Я только начал изучать Unity и я хочу сделать что-то наподобие 2D игры с камерой Top-Down. Сам вопрос, как сделать так, чтобы персонаж при движении не проходил через стены? Я пробовал разные варианты передвижения и само собой у меня стоят: rigidbody на игроке и коллайдеры на стене и игроке. Можете подсказать как сделать стены "твердыми". Возможно те варианты скриптов были неверны и я прошу ссылку или скриншот верных кодов) или же ошибка в самом юнити?

Как сделать чтобы объект не проходил сквозь стены в unity

Чужой компьютер

Просмотр темы 8

прохождение сквозь объекты

DELETED

Нравится Показать список оценивших

DELETED

Нравится Показать список оценивших

Сергей Кот

поставь Mesh Collider на объекты и не будет проходить

Нравится Показать список оценивших

DELETED

Нравится Показать список оценивших

DELETED

блин все равно не помогает

Нравится Показать список оценивших

DELETED

блин ребят помогите

Нравится Показать список оценивших

Spartan Kify

Валера, Добавь в предмет Mesh Collider и выбери предмет который тебе нужен ОН ЧАСТО ВЫБЕРАЕТЬСЯ САМ НО если нет то покажи его

Как сделать чтобы объект не проходил сквозь стены в unity

Чужой компьютер

Создание игр на движке Unity

Создание игр на движке Unity

вернуться к странице

Создание игр на движке Unity

.

Как сделать чтобы объект не проходил сквозь стены в unity

И к дороге или игроку прикрепи скрипт для отладки в консоле

P.S Rigidbody вешай на дорогу и скрипт если захочешь тоже.

Сейчас нет на сайте Цитата

Попробуй добавить ему физику(Rigidbody) и убери галочку с гравитации.
Так как я понял у тебя объект просто не может найти другой объект на который опереться.

И к дороге или игроку прикрепи скрипт для отладки в консоле

Код
void OnCollisionEnter(Collision myCol)
<
if (myCol.gameObject.name == "Тут имя объекта(дороги) как на сцене")
<
Debug.Log ("Объект стукнулся");
>
>

P.S Rigidbody вешай на дорогу и скрипт если захочешь тоже.

постоянный участник Сейчас нет на сайте

using UnityEngine;
using System.Collections;

public class . НАЗВАНИЕ. MonoBehaviour

Скрипт вешаешь на игрока

P.S То что выделено воск. знаками, заменяешь на название своего скрипта(как в Project).
В юнити и в скрипте должно быть одно название.

Читайте также: