Unity检测鼠标碰撞或手指触摸

<span style="font-size:14px;">做射击游戏,检测是否达到敌兵,可以利用从摄像机发射一条射线,如果射线检测到碰撞了敌兵,则视为击中目标,鼠标或者手指拖拽物体也可以利用该方法获取需要托转的对象,然后设置被拖拽的物体的坐标跟随手指移动</span>
<span style="font-size:14px;">
</span>
<span style="font-size:14px;">
</span>
<span style="font-size:14px;">using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private LayerMask layerGround;  //定义射线碰撞的层
    private Transform myTransform;
    private bool ANDROID = false;
    private bool WINDOW = false;
    // Use this for initialization
    void Awake()
    {
#if UNITY_ANDROID  //判断平台
         ANDROID = true;
#endif

#if UNITY_STANDALONE_WIN  //判断平台
        WINDOW = true;
#endif
    }

    void Start()
    {
        myTransform = transform;
        layerGround = 1 << LayerMask.NameToLayer("Cube");
    }

    void Update()
    {
        if (WINDOW)
        {
            if (Input.GetMouseButtonDown(0))
            {
                //创建一条从摄像机到触摸位置的射线
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // 定义射线
                RaycastHit rayHit;
                if (Physics.Raycast(ray, out rayHit, layerGround))  // 参数1 射线,参数2 碰撞信息, 参数3 碰撞层
                {
                    //打印射线碰撞到的对象需要挂载Collider盒子
                    print("info   " + rayHit.collider.gameObject.name);
                }
            }
        }

        if (ANDROID)
        {
            if (Input.touchCount >= 1)
            {
                // 创建一个从摄像机到触摸位置的射线
                Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
                RaycastHit rayHit;
                if (Physics.Raycast(ray, out rayHit))
                {
                    //打印射线碰撞到的对象,对象需要挂载Collider盒子
                    Debug.Log(rayHit.collider.name);
                }
            }
        }
    }
}
</span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值