В настоящее время пытается работать над сценарием, позволяющим шару наносить ущерб сетчатой сетке, когда она проходит через уровень. Проблема в том, что у меня возникли проблемы с поиском правильного уравнения для перемещения вершин.Mesh Filter Cosmetic Damage
Вот что я thusfar
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
public class MeshDenter : MonoBehaviour {
Vector3[] originalMesh;
public float dentFactor;
public LayerMask collisionMask;
private MeshFilter meshFilter;
void Start() {
meshFilter = GetComponent<MeshFilter>();
originalMesh = meshFilter.mesh.vertices;
}
void OnCollisionEnter(Collision collision) {
Vector3[] meshCoordinates = originalMesh;
// Loop through collision points
foreach (ContactPoint point in collision.contacts) {
// Index with the closest distance to point.
int lastIndex = 0;
// Loop through mesh coordinates
for (int i = 0; i < meshCoordinates.Length; i++) {
// Check to see if there is a closer index
if (Vector3.Distance(point.point, meshCoordinates[i])
< Vector3.Distance(point.point, meshCoordinates[lastIndex])) {
// Set the new index
lastIndex = i;
}
}
// Move the vertex
meshCoordinates[lastIndex] += /*Insert Rest Of Equation Here*/;
}
meshFilter.mesh.vertices = meshCoordinates;
}
void Reset() {
meshFilter.mesh.vertices = originalMesh;
}
}
Вы можете проверить параметры для этого 'Reflect' вызова. Является ли игра 2D или 3D в природе? Если ваше движение в основном 2D, соответствующее 'collision.relativeVelocity' будет стремиться ограничить ваш выход. – rutter
Этот скрипт управляет трехмерной сеткой. Сам геймплей 2D-ish http://gyazo.com/96f472dc6bfcbc8893290ccf6b4c16e6 –