46 lines
868 B
C#
46 lines
868 B
C#
using UnityEngine;
|
|
|
|
namespace Es.InkPainter.Sample
|
|
{
|
|
[RequireComponent(typeof(Collider), typeof(MeshRenderer))]
|
|
public class CollisionPainter : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Brush brush;
|
|
|
|
[SerializeField]
|
|
private int wait = 3;
|
|
|
|
private int waitCount;
|
|
|
|
public void Awake()
|
|
{
|
|
GetComponent<MeshRenderer>().material.color = brush.Color;
|
|
}
|
|
|
|
public void FixedUpdate()
|
|
{
|
|
waitCount++;
|
|
}
|
|
|
|
public void OnCollisionStay(Collision collision)
|
|
{
|
|
if (waitCount < wait)
|
|
{
|
|
return;
|
|
}
|
|
waitCount = 0;
|
|
ContactPoint[] contacts = collision.contacts;
|
|
for (int i = 0; i < contacts.Length; i++)
|
|
{
|
|
ContactPoint contactPoint = contacts[i];
|
|
InkCanvas component = contactPoint.otherCollider.GetComponent<InkCanvas>();
|
|
if (component != null)
|
|
{
|
|
component.Paint(brush, contactPoint.point);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|