我怎么知道用Unity3D触摸了哪个游戏对象
How can i know touched which game object with Unity3D
我正在使用 Unity3D,并且我正在编写增强现实程序。如果我触摸屏幕并且触摸的位置有一个对象,我会做一些事情。
其实我想要“我怎么知道我触摸了哪个游戏对象?
我的代码在这里:
using UnityEngine;
using System.Collections;
public class Atak : MonoBehaviour {
private Animator anim;
private GameObject kamera;
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
kamera = GameObject.FindGameObjectWithTag ("Kamera");
}
// Update is called once per frame
void Update () {
RaycastHit dokunma;
if (Physics.Raycast(kamera.transform.position,Input.mousePosition,10)&&
dokunma.collider.gameObject.tag=="Oyuncu" && Input.GetMouseButtonDown(0)
){
anim.SetBool ("Bekle", false);
anim.SetBool ("Saldir", true);
} else{
anim.SetBool ("Bekle", true);
anim.SetBool ("Saldir", false);
}
}
}
编辑报错:
Use of unassigned local variable'dokunma'
您没有为 dokunma
(RaycastHit) 变量赋值。请注意,您必须使用 out
关键字将 dokunma
变量传递给 Physics.Raycast
函数,以便对其进行初始化并将光线投射的结果存储在其中。
void Update()
{
Ray rayCast = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit dokunma;
if (Physics.Raycast(rayCast, out dokunma, 10) &&
dokunma.collider.gameObject.tag == "Oyuncu" && Input.GetMouseButtonDown(0)
)
{
anim.SetBool("Bekle", false);
anim.SetBool("Saldir", true);
}
else
{
anim.SetBool("Bekle", true);
anim.SetBool("Saldir", false);
}
}
在执行光线投射之前先检查触摸压力更有意义。始终使用 CompareTag
函数来比较标签。下面的东西应该可以做到。
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray rayCast = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit dokunma;
if (Physics.Raycast(rayCast, out dokunma, 10))
{
if (dokunma.collider.CompareTag("Oyuncu"))
{
anim.SetBool("Bekle", false);
anim.SetBool("Saldir", true);
}
else
{
anim.SetBool("Bekle", true);
anim.SetBool("Saldir", false);
}
}
}
}
我正在使用 Unity3D,并且我正在编写增强现实程序。如果我触摸屏幕并且触摸的位置有一个对象,我会做一些事情。 其实我想要“我怎么知道我触摸了哪个游戏对象?
我的代码在这里:
using UnityEngine;
using System.Collections;
public class Atak : MonoBehaviour {
private Animator anim;
private GameObject kamera;
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
kamera = GameObject.FindGameObjectWithTag ("Kamera");
}
// Update is called once per frame
void Update () {
RaycastHit dokunma;
if (Physics.Raycast(kamera.transform.position,Input.mousePosition,10)&&
dokunma.collider.gameObject.tag=="Oyuncu" && Input.GetMouseButtonDown(0)
){
anim.SetBool ("Bekle", false);
anim.SetBool ("Saldir", true);
} else{
anim.SetBool ("Bekle", true);
anim.SetBool ("Saldir", false);
}
}
}
编辑报错:
Use of unassigned local variable'dokunma'
您没有为 dokunma
(RaycastHit) 变量赋值。请注意,您必须使用 out
关键字将 dokunma
变量传递给 Physics.Raycast
函数,以便对其进行初始化并将光线投射的结果存储在其中。
void Update()
{
Ray rayCast = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit dokunma;
if (Physics.Raycast(rayCast, out dokunma, 10) &&
dokunma.collider.gameObject.tag == "Oyuncu" && Input.GetMouseButtonDown(0)
)
{
anim.SetBool("Bekle", false);
anim.SetBool("Saldir", true);
}
else
{
anim.SetBool("Bekle", true);
anim.SetBool("Saldir", false);
}
}
在执行光线投射之前先检查触摸压力更有意义。始终使用 CompareTag
函数来比较标签。下面的东西应该可以做到。
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray rayCast = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit dokunma;
if (Physics.Raycast(rayCast, out dokunma, 10))
{
if (dokunma.collider.CompareTag("Oyuncu"))
{
anim.SetBool("Bekle", false);
anim.SetBool("Saldir", true);
}
else
{
anim.SetBool("Bekle", true);
anim.SetBool("Saldir", false);
}
}
}
}