做射击游戏,检测是否达到敌兵,可以利用从摄像机发射一条射线,如果射线检测到碰撞了敌兵,则视为击中目标,鼠标或者手指拖拽物体也可以利用该方法获取需要托转的对象,然后设置被拖拽的物体的坐标跟随手指移动
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);
}
}
}
}
}