Unity Raycast из Spotlight не может обнаружить препятствие в 3D-боковой прокруткеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Unity Raycast из Spotlight не может обнаружить препятствие в 3D-боковой прокрутке

Сообщение Anonymous »

Я работаю над 3D-игрой в боковой прокрутке в Unity, где я хочу отбрасывать лучи из пятнистого света, чтобы обнаружить препятствия, за которыми я хочу генерировать платформу теневой (аналогично проекции: первый свет).
Тем не менее. /> Иметь правильные коробки Colderers < /p>
прямо перед светом < /p>
Версия Unity: [Заполните свою версию] < /p>
Опубликания: GameObjects с boxcollider, layer: "Obstacle", tag: "shadowsurface" Physics.raycast (Lightpos, Dir, Out Hit, MaxDistance, Abstaclemask) < /p>
Маска слоя препятствий: (1
Все Raycasts Miss, даже если они могут видеть, что они находятся непосредственно на Abstacles < /p> puder < /p> puder < /p> obstacles < /p> obstacles. и Meshrenderer < /p>
препятствие не является триггером < /p>
препятствие в пределах maxdistance < /p>
debug.drawray () показывает, что он визуально пересекает объект < /p>
provice and raycast. Рейкалы не попадают в препятствие, и как я могу это исправить. < /p>
Code snippet

Ray ray = new Ray(transform.position, dir);
if (Physics.Raycast(ray, out RaycastHit hit, maxDistance, obstacleLayer))
{
Debug.Log("Hit: " + hit.collider.name);
}
else
{
Debug.Log("No hit");
}
< /code>

using UnityEngine;
using System.Collections.Generic;

[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer), typeof(MeshCollider))]
public class ShadowPlatformGenerator : MonoBehaviour
{
[Header("Settings")]
public float radius = 5f;
public int rayCount = 90;
public LayerMask obstacleMask;
public Transform lightSource;

private Mesh mesh;
private MeshFilter meshFilter;
private MeshCollider meshCollider;

void Awake()
{
meshFilter = GetComponent();
meshCollider = GetComponent();
mesh = new Mesh();
mesh.name = "ShadowPlatformMesh";
meshFilter.mesh = mesh;
}

void Start()
{
GenerateMesh();
}

void GenerateMesh()
{
if (lightSource == null) return;

Light spot = lightSource.GetComponent();
if (spot == null || spot.type != LightType.Spot)
{
Debug.LogError("Spot Light Specify");
return;
}

Vector3 origin = lightSource.position;
Vector3 forward = lightSource.forward;
float angleRange = spot.spotAngle;
float angleStart = -angleRange / 2f;
float angleStep = angleRange / rayCount;

List vertices = new List();
List triangles = new List();

Vector3 localOrigin = transform.InverseTransformPoint(origin);
vertices.Add(localOrigin);
for (int i = 0; i

using UnityEngine;
using System.Collections.Generic;

[RequireComponent(typeof(MeshFilter), typeof(MeshCollider))]
public class ShadowMaskBoolean : MonoBehaviour
{
public Light playerSpotLight;
public LayerMask obstacleMask;
public ShadowPlatformGenerator platformGenerator; // Reference to platform generator
public float radius = 3f;
public int segments = 20;

private Mesh platformMesh;
private MeshCollider platformCollider;

void Start()
{
platformMesh = platformGenerator.GetComponent().mesh;
platformCollider = platformGenerator.GetComponent();
UpdatePlatformMask();
}

void UpdatePlatformMask()
{
Vector3 origin = playerSpotLight.transform.position;

List originalVertices = new List(platformMesh.vertices);
List originalTriangles = new List(platformMesh.triangles);

HashSet validVertices = new HashSet { 0 };

float angleStep = 180f / segments;

for (int i = 0; i
Извините, мой родной язык не английский, и, насколько я знаю, я могу использовать только этот метод, чтобы помочь мне достичь своей цели, поэтому я могу использовать только CHATGPT, чтобы помочь мне задать вопросы. Если есть что -то, что я пропустил или не объяснил, пожалуйста, дайте мне знать, чтобы я мог добавить это. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/796 ... e-scroller
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невидимое препятствие / заранее нарисованное препятствие
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Невидимое препятствие / заранее нарисованное препятствие
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Unity Raycast проходит сквозь стены
    Anonymous » » в форуме C#
    0 Ответы
    69 Просмотры
    Последнее сообщение Anonymous
  • Проблема Raycast с точным определением хит-пойнта в игре Unity 2D
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Unity Raycast не распознает столкновение
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»