私はオブジェクトを破壊するためにイベントOnTriggerStay2Dを使用しています。なぜなら、私はOnTriggerEnter2Dの代わりにこれを使用している理由は、私がオブジェクトをタッチスクリーンでドラッグしているからです。 、私が持っている問題はOntriggerStay2Dは、常にそれが解放された後、その時々のオブジェクトが破壊されていない、と呼ばれていませんし、それが動作するように再び移動させなければならないということですが、私はOnTriggerStayがある Unity3D onTriggerStayを使用して
ユニティ
からdocummentationを読みましたトリガーに触れている他のすべてのColliderのほぼすべてのフレームを呼び出しました。
public void OnTriggerStay2D(Collider2D other)
{
if (gameObject.tag == other.tag) {
Destroy (other.gameObject);
}
}
私は私がオブジェクトを解放毎回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