Как создать собственный коллайдер?

Физика в Unity

Как создать собственный коллайдер?

Сообщение XENiX 18 сен 2011, 10:46

Возможно ли создать собственный коллайдер? Конкретно мне нужен коллайдер - треугольник, возможно ли его создать без применения mesh collider?
XENiX
UNец
 
Сообщения: 9
Зарегистрирован: 07 сен 2011, 01:33

Re: Как создать собственный коллайдер?

Сообщение Paul Siberdt 18 сен 2011, 11:10

Без применения меша, можно собрать агрегат из коллайдеров-примитивов. Разумеется, "чистый" треугольник получить не удастся.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как создать собственный коллайдер?

Сообщение XENiX 18 сен 2011, 11:16

Неужто в таком мощном движке не нашлось места для создания примитивнейшего коллайдера?

А есть вариант создать меш программно, описав его вершины в коде и, добавив впоследствии на спрайт?

Игра 2D, спрайт вот такой:
Metall_triangle.jpg

Данный коллайдер по задумке должен отклонять снаряды под углом 90 градусов.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось XENiX 18 сен 2011, 11:26, всего редактировалось 1 раз.
XENiX
UNец
 
Сообщения: 9
Зарегистрирован: 07 сен 2011, 01:33

Re: Как создать собственный коллайдер?

Сообщение Paul Siberdt 18 сен 2011, 11:20

Примитивнейший коллайдер - это сфера.
За 13 лет геймдева я не встречал ситуации, когда потребовался бы коллайдер-равносторонний треугольник или коллайдер-равносторонняя призма.

Разумеется, можно создать меш в коде и навесить его самостоятельно на объект, как меш-коллайдер.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как создать собственный коллайдер?

Сообщение XENiX 18 сен 2011, 11:27

Не могли бы вы привести пример создания меша в коде?
XENiX
UNец
 
Сообщения: 9
Зарегистрирован: 07 сен 2011, 01:33


Re: Как создать собственный коллайдер?

Сообщение XENiX 18 сен 2011, 16:42

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class TriangleCollider : MonoBehaviour
{
    void Start()
    {
        gameObject.AddComponent("MeshFilter");
        Mesh mesh = GetComponent<MeshFilter>().mesh;
       
        mesh.vertices = new Vector3[]
                                {
                                    new Vector3(0, 0, 0),
                                    new Vector3(1.9f, 0, 0),
                                    new Vector3(1.9f, 1.9f, 0),
                                    new Vector3(0, 0, 1),
                                    new Vector3(1.9f, 0, 1),
                                    new Vector3(1.9f, 1.9f, 1)
                                };
        mesh.triangles = new int[] { 0, 1, 2, 3, 4, 5, 0, 3, 2, 3, 2, 5, 0, 3, 4, 0, 1, 4, 2, 4, 5, 1, 2, 4 };

        transform.GetComponent<MeshCollider>().sharedMesh = mesh;
    }
}

Спасибо, сам уже сделал =)
XENiX
UNец
 
Сообщения: 9
Зарегистрирован: 07 сен 2011, 01:33


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1