我使用事件OnTriggerStay2D销毁一个对象,我使用这个而不是OnTriggerEnter2D的原因是因为我使用触摸屏拖动对象,并且我想在它被释放后将其摧毁,这个问题我已经是OntriggerStay2D并不总是叫,所以有时它被释放之后的对象不被破坏,它必须再次转移到工作,我从团结Unity3D使用OnTriggerStay
阅读docummentationOnTriggerStay是几乎所有碰撞触发器的对撞机都会调用这些帧。
public void OnTriggerStay2D(Collider2D other)
{
if (gameObject.tag == other.tag) {
Destroy (other.gameObject);
}
}
我想知道是否有任何方法来调用OntriggerStay2D每次我释放的对象。 谢谢。
编辑 拖码使用OnTriggerStay2D
此
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Drag : MonoBehaviour {
private bool draggingItem = false;
private GameObject draggedObject;
private Vector2 touchOffset;
void Update()
{
if (HasInput)
{
DragOrPickUp();
}
else
{
if (draggingItem)
DropItem();
}
}
Vector2 CurrentTouchPosition
{
get
{
Vector2 inputPos;
inputPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
return inputPos;
}
}
private void DragOrPickUp()
{
var inputPosition = CurrentTouchPosition;
if (draggingItem)
{
draggedObject.transform.position = inputPosition + touchOffset;
}
else
{
RaycastHit2D[] touches = Physics2D.RaycastAll(inputPosition, inputPosition, 0.5f);
if (touches.Length > 0)
{
var hit = touches[0];
if (hit.transform != null && hit.rigidbody != null)
{
draggingItem = true;
draggedObject = hit.transform.gameObject;
touchOffset = (Vector2)hit.transform.position - inputPosition;
}
}
}
}
private bool HasInput
{
get
{
return Input.GetMouseButton(0);
}
}
public void DropItem()
{
draggingItem = false;
}
}
'OnTriggerStay2D'与拖动对象有什么关系? – Programmer
我拖着物体碰撞到另一个物体,但我不想在它们碰撞时摧毁它,当我释放它时,如果它们仍然接触,我想摧毁它。 –
现在有道理。请添加您的拖动代码。这将有助于给你一个答案。 – Programmer