Итак, я работаю над проектом, в котором есть несколько динамических объектов тумана, и я хотел попробовать использовать для него DOTS, по сути, это тонна маленьких спрайтов, которые сжимаются при приближении игрока. У меня все это работает нормально, и теперь мне нужно обновить объекты с учетом позиции игрока.
Я попробовал напрямую передать преобразование игрока, но это не сработало, поэтому я решил при передаче вектора2. Однако мне не удалось обновить этот вектор2 в авторском сценарии или даже в файле debug.log. Думаю, это связано с тем, что объект находится в подсцене, или с тем, что он является объектом, и теперь я ищу исправление.< /p>
FogAuthoring.cs
using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Mathematics;
using UnityEngine;
public class FogAuthoring : MonoBehaviour
{
public float LerpSpeed;
public float TargetScale;
public float2 PlayerPosition;
private Transform _player;
private void Start()
{
_player = GameObject.FindWithTag("Player").transform;
Debug.Log("A");
}
private void Update()
{
PlayerPosition = new float2(_player.position.x, _player.position.y);
Debug.Log("B");
}
private class Baker : Baker
{
public override void Bake(FogAuthoring authoring)
{
Entity entity = GetEntity(TransformUsageFlags.Dynamic);
AddComponent(entity, new FogData
{
LerpSpeed = authoring.LerpSpeed,
TargetScale = authoring.TargetScale,
PlayerPosition = authoring.PlayerPosition
});
}
}
}
public struct FogData : IComponentData
{
public float LerpSpeed;
public float TargetScale;
public float2 PlayerPosition;
}
FogControllerDOTS.cs
using System.Collections
using System.Collections.Generic;
using UnityEngine;
using Unity.Burst;
using Unity.Entities;
using Unity.Transforms;
using Unity.Jobs;
public partial struct FogControllerDOTS : ISystem
{
public const float distThreshold = 5;
public void OnCreate(ref SystemState state)
{
state.RequireForUpdate();
}
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
/*
foreach ((RefRW localTransform, RefRO fogData) in SystemAPI.Query())
{
float currentScale = localTransform.ValueRO.Scale;
float targetScale;
if (Vector2.Distance(new Vector2(localTransform.ValueRO.Position.x, localTransform.ValueRO.Position.y), fogData.ValueRO.PlayerPosition)
Подробнее здесь: https://stackoverflow.com/questions/788 ... ne-unity-c
Журнал отладки не работает с подсценой объекта (Unity, C#) ⇐ C#
Место общения программистов C#
-
Anonymous
1722877568
Anonymous
Итак, я работаю над проектом, в котором есть несколько динамических объектов тумана, и я хотел попробовать использовать для него DOTS, по сути, это тонна маленьких спрайтов, которые сжимаются при приближении игрока. У меня все это работает нормально, и теперь мне нужно обновить объекты с учетом позиции игрока.
Я попробовал напрямую передать преобразование игрока, но это не сработало, поэтому я решил при передаче вектора2. Однако мне не удалось обновить этот вектор2 в авторском сценарии или даже в файле debug.log. Думаю, это связано с тем, что объект находится в подсцене, или с тем, что он является объектом, и теперь я ищу исправление.< /p>
FogAuthoring.cs
using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Mathematics;
using UnityEngine;
public class FogAuthoring : MonoBehaviour
{
public float LerpSpeed;
public float TargetScale;
public float2 PlayerPosition;
private Transform _player;
private void Start()
{
_player = GameObject.FindWithTag("Player").transform;
Debug.Log("A");
}
private void Update()
{
PlayerPosition = new float2(_player.position.x, _player.position.y);
Debug.Log("B");
}
private class Baker : Baker
{
public override void Bake(FogAuthoring authoring)
{
Entity entity = GetEntity(TransformUsageFlags.Dynamic);
AddComponent(entity, new FogData
{
LerpSpeed = authoring.LerpSpeed,
TargetScale = authoring.TargetScale,
PlayerPosition = authoring.PlayerPosition
});
}
}
}
public struct FogData : IComponentData
{
public float LerpSpeed;
public float TargetScale;
public float2 PlayerPosition;
}
FogControllerDOTS.cs
using System.Collections
using System.Collections.Generic;
using UnityEngine;
using Unity.Burst;
using Unity.Entities;
using Unity.Transforms;
using Unity.Jobs;
public partial struct FogControllerDOTS : ISystem
{
public const float distThreshold = 5;
public void OnCreate(ref SystemState state)
{
state.RequireForUpdate();
}
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
/*
foreach ((RefRW localTransform, RefRO fogData) in SystemAPI.Query())
{
float currentScale = localTransform.ValueRO.Scale;
float targetScale;
if (Vector2.Distance(new Vector2(localTransform.ValueRO.Position.x, localTransform.ValueRO.Position.y), fogData.ValueRO.PlayerPosition)
Подробнее здесь: [url]https://stackoverflow.com/questions/78810509/debug-log-not-working-with-entity-sub-scene-unity-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия