• Как проверить что Raycast ни во что не врезался?

    WNeZRoS
    @WNeZRoS
    Если Physics.Raycast вернул false, то "Raycast ни во что не врезался".

    В вашем коде надо у первого if добавить else блок, и там напить обработку этого случая.
    Но без дублирования кода будет проще после isWorkThat = true; добавить return;, а содержимое else блока перенести в конец функции после всех if.
    Ответ написан
    Комментировать
  • Почему выдает черный экран?

    WNeZRoS
    @WNeZRoS
    Нажмите во время зависания в терминале Ctrl+C, и увидите где всё зависло.
    Это будет строчка Barier_event =int(input()) - input ожидает ввода в консоли.
    Ответ написан
    2 комментария
  • Можно ли как-то получить доступ к отображающим элементам ToolBar?

    WNeZRoS
    @WNeZRoS
    требуется подсвечивать текущий элемент

    с помощью события нажания


    Лучше не делать таких не явных предположений о текущем элементе, кнопка может быть нажата, но из-за каких-то внутренних условий "текущесть" может не измениться.
    Лучше завести во вью модели флаг о том что он текущий и по нему подсвечивать. Проще всего в той же, для которой ItemTemplate с кнопкой написан.

    Но если хочется более чистого кода, то можно через RelativeSource вылезти во внешнюю вью модель и сделать проверку через мультибининг с конвертером
    <MultiBinding Converter="{StaticResource IsEqualsConverter}">
        <Binding />
        <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type ToolBar}}" Path="DataContext.CurrentElement" />
    </MultiBinding>


    Если вдруг под подсветить вы имеете в виде не что-то своё хитрое, а фокус, то можно использовать экстеншен с attached dependency property для установки фокуса. В этом случае для определения первого элемента поможет {RelativeSource Mode=PreviousData} - у первого элемента он будет {x:Null}
    Ответ написан
    Комментировать
  • Unity не считывает курсор мыши. Что делать?

    WNeZRoS
    @WNeZRoS
    Было бы понятнее, если бы вы написали что на 13 строке. Скорее всего это строка с Camera.main, а оно может быть null если у объекта камеры не стоит тег MainCamera
    Ответ написан
  • При создании своего UserControl на Avalonia лезут ошибки?

    WNeZRoS
    @WNeZRoS
    Внутри SplitView.Content вероятно надо TransitioningContentControl обернуть в Border что строкой выше, или обернуть их всех в какую-то панель где может быть больше одного элемента.
    Ответ написан
  • Не работают 32 битные приложения из windows почему?

    WNeZRoS
    @WNeZRoS
    Для запуска 32 битных Windows программ на 64 битном wine нужна дополнительная настройка.
    https://linuxthebest.net/yak-zapustiti-64-bitnij-w...
    Ответ написан
    Комментировать
  • Можно ли подключить второй монитор к ноутбуку?

    WNeZRoS
    @WNeZRoS
    Судя по описанию портов ноутбука, USB Type-C порты не поддерживают видео режимы, соответственно простой вариант с хабом/переходников работать не будет.
    Но можно купить USB видеокарту и подключить её к обычному USB Type-A. Поиграть на мониторе подключенном так скорее всего всего будет не очень удобно, но вкладки таскать можно.

    Пример такой видеокарты, видео обзор похожей штуки
    Ответ написан
    1 комментарий
  • Почему нельзя настроить параметр Auto Smooth в вкладке нормалей в блендер?

    WNeZRoS
    @WNeZRoS
    Видимо вы эту модель импортировали. Надо удалить Custom Split Normals Data.
    civ2akgernxoxcb995vsvnon9sg.png
    Ответ написан
    1 комментарий
  • Раскрывающийся список с объектами в WPF?

    WNeZRoS
    @WNeZRoS
    То что на картинке выглядит как Expander, в Header у него панель с иконкой и текстом, в Content - DataGrid с таблицей. Если таких экспандеров не фиксированное кол-во, то их можно генерить с помощью ItemsControl
    Ответ написан
    3 комментария
  • Почему Юнити перестает работать?

    WNeZRoS
    @WNeZRoS
    Возможно вечный цикл из-за того что if (oldCount != count) никогда не заходит внутрь т.к. этот код блокирует обработку кадров. Чтобы кадры продолжили обрабатываться надо в цикле использовать yield. Заодно можно заменить это ожидание циклом на корутину от юнити: yield return new WaitForSeconds(5);

    https://docs.unity3d.com/ScriptReference/WaitForSe...
    Ответ написан
    4 комментария
  • Как к поймать событие OnMouseLeftButtonUp из пользовательского элемента UIElement?

    WNeZRoS
    @WNeZRoS
    Чтобы ловить события мыши вне элемента этот элемент должен захватить мышь через Mouse.Capture. Захват надо не забыть отменить когда он уже не актуален, иначе другие элементы не смогут получать события мыши.
    Ответ написан
    Комментировать
  • Почему MouseMove не срабатывает?

    WNeZRoS
    @WNeZRoS
    У Canvas по умолчанию нет фона, соответственно курсору не за что зацепиться и MouseMove уходит окну. Если добавить для канваса Background="Transparent" (прозрачный цвет считается за фон, но визуально ничего не меняет), то всё будет работать.
    Раньше работало видимо потому что в канвасе были визуально видимые элементы.
    Ответ написан
    1 комментарий
  • Как получить информацию о версии Unreal'а, имея только uasset файлы?

    WNeZRoS
    @WNeZRoS
    Открываете файл в HEX редакторе или хотя бы в блокноте и видите что-то такое:
    lsldd2wvvvwajrb6hnkkt_ao0wi.png
    Ответ написан
    Комментировать
  • Как в wpf mvvc отобразить список элементов динамически?

    WNeZRoS
    @WNeZRoS
    Со структурой как у вас не понятно как оно должно работать.
    Если сделать ItemData типизированными, то всё становится проще - wpf может по типу выбирать подходящий DataTemplate, и значения мы получаем нужного типа, а не пойми что.

    public class SettingViewHost
    {
        public IReadOnlyCollection<SettingView>? Views { get; init; }
    }
    
    public class SettingView
    {
        public string? Name { get; init; }
        public IReadOnlyCollection<ItemData>? Options { get; init; }
    }
    
    public class ItemData
    {
        public string? Name { get; init; }
        public int GridRow { get; init; }
        public int GridColumn { get; init; }
    }
    
    public class BooleanItemData : ItemData // TODO implement INotifyPropertyChanged and raise PropertyChanged in Value setter
    {
        public bool Value { get; set; }
    }
    
    public class StringItemData : ItemData // TODO implement INotifyPropertyChanged and raise PropertyChanged in Value setter
    {
        public string Value { get; set; } = string.Empty;
    }


    Собираем SettingViewHost с любым количеством SettingView с разными внутренними настройками и закидываем во вью с такими шаблонами:

    <DataTemplate DataType="{x:Type local:StringItemData}">
        <StackPanel Orientation="Vertical">
            <TextBlock Text="{Binding Name, Mode=OneTime}" />
            <TextBox Text="{Binding Value}" />
        </StackPanel>
    </DataTemplate>
    
    <DataTemplate DataType="{x:Type local:BooleanItemData}">
        <CheckBox Content="{Binding Name, Mode=OneTime}" IsChecked="{Binding Value}" />
    </DataTemplate>
    
    <DataTemplate DataType="{x:Type local:SettingView}">
        <ItemsControl ItemsSource="{Binding Options}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid IsItemsHost="True">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                    </Grid>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemContainerStyle>
                <Style TargetType="{x:Type ContentPresenter}">
                    <Setter Property="Grid.Column" Value="{Binding GridColumn, Mode=OneTime}" />
                    <Setter Property="Grid.Row" Value="{Binding GridRow, Mode=OneTime}" />
                    <Setter Property="Margin" Value="4" />
                </Style>
            </ItemsControl.ItemContainerStyle>
        </ItemsControl>
    </DataTemplate>
    
    <DataTemplate DataType="{x:Type local:SettingViewHost}">
        <StackPanel Orientation="Vertical">
            <ComboBox Name="ComboBox" ItemsSource="{Binding Views}">
                <ComboBox.ItemTemplate>
                    <DataTemplate DataType="{x:Type local:SettingView}">
                        <TextBlock Text="{Binding Name, Mode=OneTime}" />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
            
            <ContentControl Content="{Binding ElementName=ComboBox, Path=SelectedItem}" />
        </StackPanel>
    </DataTemplate>


    Пример сделан с Grid'ом 2х2, можно использовать любую панель. Обычный Grid для динамических целей не удобен т.к. у него фиксированное кол-во строк и столбцов. Лучше использовать UniformGrid или что-то ещё, или развлекаться с attached dependency property или MarkupExtension чтобы динамически генерировать строки и столбцы.
    Ответ написан
    Комментировать
  • Как узнать нормаль поверхности на которой стоит персонаж?

    WNeZRoS
    @WNeZRoS
    У Collider2D есть метод GetContacts.

    Результатом этого метода будет массив или список ContactPoint2D.
    У ContactPoint2D есть поле normal - нормаль поверхности в точке коллизии.

    Collider2D collider;
    
    var contacts = new List<ContactPoint2D>();
    collider.GetContacts(contacts);
    
    foreach (var contact in contacts)
    {
        var surfaceNormal = contact.normal;
    }
    Ответ написан
    Комментировать
  • Что делает IEqualityComparer? Он вообще работает?

    WNeZRoS
    @WNeZRoS
    IEqualityComparer<T> используется в коде с обобщениями (generics).
    Например, он используется для ключей в Dictionary или для сравнения (Equals) элементов в ValueTuple.
    Если бы в Dictionary использовали object.Equals, а не IEqualityComparer<T>, то при сравнении ключей-структур постоянно бы происходил боксинг, что не очень эффективно. (У простых структур всё-равно будет боксинг, чтобы его не было надо реализовать IEquatable).

    Когда у вас уже известен тип большого смысле использовать IEqualityComparer<T> мало, есть более лаконичные вариант для Equals и GetHashCode.
    Ответ написан
  • Что не так с поворотом?

    WNeZRoS
    @WNeZRoS
    Всё зависит от того что вы хотите получить и что такое "криво выглядит".

    Можно, например, делать интерполяцию, тогда при подходе к 3 метрам расстояния дополнительный угол плавно уберётся:
    angle = Mathf.LerpAngle(angle, angle - additionalAngle, direction.magnitude - 3);


    А можно не давать целится ближе 3 метров:
    if (direction.magnitude < 3)
        targetPos = ownerPos + direction.normalized * 3;


    PS

    На вопрос можно было бы получить ответ быстрее если прикладывать больше контекста:
    - больше кода - всё что относится к повороту
    - как настроены объекты
    - видео или гифку с проблемой
    - видео как хотелось бы чтобы оно работало
    Ответ написан
    2 комментария
  • Как добиться отображения только силуэтов отдельных объектов?

    WNeZRoS
    @WNeZRoS
    Вам нужен Unlit шейдер

    unlit-shader-tutorial-basic-hardcoded-color.png

    Возможно так же понадобится сделать Outline для объектов.
    Ответ написан
    Комментировать
  • Как в логике mvvc wpf передать в класс ViewModel из view свойство класса .xaml.cs?

    WNeZRoS
    @WNeZRoS
    Почему это поле не передается через, передается null
    CommandParameter="{Binding ElementName=selfUserControl,Path=Points, Mode=OneWay}">, selfUserControl x:Name элемента.

    Проперти Points должен быть public

    Находил примеры, там везде свойство ItemsSource, но такого свойства нету у Canvas

    Надо использовать ItemsControl, у которого как раз есть ItemsSource, а Canvas использовать как панель для этого ItemsControl через ItemsPanel
    Ответ написан
    Комментировать
  • Как индефицировать объект списка по нажатию кнопки в нём?

    WNeZRoS
    @WNeZRoS
    Если используете команды, то надо у кнопки сделать CommandParameter="{Binding}" и тогда вьюмодель строки придёт в команду.
    Если на Click эвентах, то из аргументов эвента достать кнопку и посмотреть на её DataContext.
    Ответ написан
    Комментировать