Unity3d 统一触摸不起作用

Unity3d 统一触摸不起作用,unity3d,unityscript,Unity3d,Unityscript,嘿,我对unity接受触摸注册有问题。我正在创建的程序需要能够在一大堆阻碍它的物品中注册对特定物品的触摸。目前Unity没有注册我的触摸,因为我试图打印消息以查看其结束位置,但它没有注册触摸。如果您能帮我修改代码,我们将不胜感激。PS:代码是用Javascript编写的 #pragma strict var target: GameObject; var SpawnPoint: Transform; var TargetCollider : BoxCollider; var hit :

嘿,我对unity接受触摸注册有问题。我正在创建的程序需要能够在一大堆阻碍它的物品中注册对特定物品的触摸。目前Unity没有注册我的触摸,因为我试图打印消息以查看其结束位置,但它没有注册触摸。如果您能帮我修改代码,我们将不胜感激。PS:代码是用Javascript编写的

    #pragma strict
var target: GameObject;
var SpawnPoint: Transform;
var TargetCollider : BoxCollider;
var hit : RaycastHit;
var clone: GameObject;

function Start () {

    var x = Random.Range(-14,17);
    var y = Random.Range(-6,9);
    var z = Random.Range(2,3);
    SpawnPoint.position = Vector3(x,y,0);
    yield WaitForSeconds(5);
    clone = Instantiate(target, SpawnPoint.position, SpawnPoint.rotation);  
}

function Update () 
{
            /*
            if (Input.GetTouch(0))  
            {

            if (hit.collider != null)
            {
            var hit = RaycastHit;
            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            TargetCollider = target.GetComponent(BoxCollider);

            if (collider.Raycast(ray, RaycastHit, 100.00f)) {
                if (hit.collider != null)
                {
                    Destroy(clone);
                    Application.LoadLevel("Splash Screen Win");
                }   

            }
        }   

}
*/
                var tapCount = Input.touchCount;
                for (var i = 0; i < tapCount; i++)
                {
                var touch = Input.GetTouch(i);
                var hit : RaycastHit;
                if (Physics.Raycast (Camera.main.ScreenPointToRay(touch.position)))
                {
                    print("test"); 
                    /*if (hit.collider != null)
                    {
                    Destroy(clone);
                    Application.LoadLevel("Splash Screen Win");
                    }*/
                }


                }



}
#pragma strict
var目标:游戏对象;
变量点:变换;
var目标对撞机:BoxCollider;
var-hit:RaycastHit;
var克隆:游戏对象;
函数启动(){
var x=随机范围(-14,17);
变量y=随机范围(-6,9);
var z=随机范围(2,3);
SpawnPoint.position=Vector3(x,y,0);
收益等待秒(5);
克隆=实例化(目标,SpawnPoint.position,SpawnPoint.rotation);
}
函数更新()
{
/*
if(Input.GetTouch(0))
{
if(hit.collider!=null)
{
var hit=raycast hit;
var-ray=Camera.main.screenpointoray(Input.mousePosition);
TargetCollider=target.GetComponent(BoxCollider);
if(对撞机光线投射(光线,光线投射命中,100.00f)){
if(hit.collider!=null)
{
破坏(克隆);
Application.LoadLevel(“启动屏幕赢”);
}   
}
}   
}
*/
var tapCount=Input.touchCount;
对于(变量i=0;i
试试这个

`函数更新() {

var tapCount=Input.touchCount;
对于(变量i=0;i
}`

您可能需要将目标对象放置在单独的层上,以便可以在该层上进行光线投射,并忽略不同层上的其他对象


这与问题中的原始代码有何不同?它只将光线距离从
Mathf.Infinity
限制为
100
。我想唯一的区别是我使用的方法返回一个光线变量,该变量包含它击中的所有碰撞器。不,它没有,光线只是一个点和一个方向<代码>物理.Raycast
在使用时返回布尔值。RaycastHit变量未使用。已使用或未使用,该变量不在原始代码中。要触摸的对象是否具有碰撞器组件?确保未将其设置为触发模式(如果设置为触发模式,请在“物理选项”中启用“光线投射命中触发器”)。
            var tapCount = Input.touchCount;
            for (var i = 0; i < tapCount; i++)
            {

            var ray = Camera.main.ScreenPointToRay (Input.GetTouch(i).position);
            var hit : RaycastHit;
            if (Physics.Raycast (ray, 100))
            {
                print("test"); 

            }


            }