Unity AR 使用射线(Ray)实现长按销毁物体

//将C#脚本挂在ARCamera上即可

//Chang.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chang : MonoBehaviour
{
    //设置时间变量
    private float touchTime;
    //创建触摸判断条件
    private bool newTouch = false;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        //判断鼠标左键处于按下状态(在这里判断手指处于按下状态)
        if (Input.GetMouseButton(0))
        {
            //创建一个射线,从相机发出射线,向鼠标指向位置发射(在这里指向手指按下位置发射)
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //获取射线信息
            RaycastHit hitInfo;

            //使用默认射线长度和其他默认参数
            if (Physics.Raycast(ray, out hitInfo))
            {
                //判断触摸次数为1(在这里就是指一个手指头)
                if (Input.touchCount == 1)
                {
                    //创建触摸对象
                    Touch touch = Input.GetTouch(0);

                    //判断手指刚触摸到屏幕时
                    if (touch.phase == TouchPhase.Began)
                    {
                        //设置触摸判断条件
                        newTouch = true;
                        //获取从软件开始运行到现在的时间(秒)
                        touchTime = Time.time;

                    }
                    // 判断手指触摸屏幕,但并未移动
                    else if (touch.phase == TouchPhase.Stationary)
                    {
                        //判断满足条件,手指按下,并且按下的时间大于一秒
                        if (newTouch == true && Time.time-touchTime >1f)
                        {
                            //重置触摸判断条件
                            newTouch=false;
                            //销毁射线碰撞到的物体
                            Destroy(hitInfo.collider.gameObject);
                        }
                    }
                    //如果不满足上述条件或手指发生了移动,则重置触摸判断条件
                    else
                    {
                        newTouch = false;
                    }
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/BYZY1314/article/details/128569091