limiter une zone de touche
Publié : 03 Juin 2020 04:30
Bonjours, j'ai un système de drag and drop et je voudrais limiter ou le joueur peut toucher pour activer le drag and drop pouvez vous m'aider.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DragNShoot: MonoBehaviour
{
public float power = 10f;
public float maxDrag = 5f;
public Rigidbody2D rb;
public LineRenderer lr;
Vector3 dragStartPos;
Touch touch;
private void Update()
{
if(Input.touchCount > 0)
{
touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
DragStart();
}
if (touch.phase == TouchPhase.Moved)
{
Dragging();
}
if(touch.phase == TouchPhase.Ended)
{
DragRelease();
}
}
}
void DragStart()
{
dragStartPos = Camera.main.ScreenToWorldPoint(touch.position);
dragStartPos.z = 0f;
lr.positionCount = 1;
lr.SetPosition(0, dragStartPos);
}
void Dragging()
{
Vector3 draggingPos = Camera.main.ScreenToWorldPoint(touch.position);
draggingPos.z = 0f;
lr.positionCount = 2;
lr.SetPosition(1, draggingPos);
}
void DragRelease()
{
lr.positionCount = 0;
Vector3 dragReleasePos = Camera.main.ScreenToWorldPoint(touch.position);
dragReleasePos.z = 0f;
Vector3 force = dragStartPos - dragReleasePos;
Vector3 clampedForce = Vector3.ClampMagnitude(force, maxDrag) * power;
rb.AddForce(clampedForce, ForceMode2D.Impulse);
}
}