当玩家点击开火按钮时,将实例化十字准线图像,当他们再次点击时,我希望十字准线图像的名称更改为繁荣。但是,当十字准线实例化时,名称已经繁荣。谢谢
if (Input.GetMouseButtonDown(0))
{
if (hitInfo.transform.gameObject.tag == "fire")
{
if (crosshair == 1)
{
GameObject Aimz = Instantiate(aim, rb2D.transform.position, rb2D.transform.rotation) as GameObject;
Aimz.name = "crosshair";
if (Input.GetMouseButtonDown(0))
{
if (hitInfo.transform.gameObject.tag == "fire")
{
Aimz.name = "boom";
}
答案 0 :(得分:0)
您是否尝试过Input.GetMouseButtonUp(0)
?按住按钮可持续几帧。当你在代码开始时已经完成它时,也没有必要检查按钮状态,因为它是相同的。
如果您仍有问题,请提供更大范围的代码。可能你的Aimz
可以设置为局部变量并检查为null而不是那么讨厌if (crosshair == 1)
。
答案 1 :(得分:0)
您检查第二个鼠标按钮是否在您检查第一个的相同框架中按下。 Input.GetMouseButtonDown()不会更改此帧。因此,Aimz.name总是被赋予" boom"只要单击鼠标按钮,因为if(Input ...)都将为true。
正确的解决方案是
if (Input.GetMouseButtonDown(0) && hitInfo.transform.gameObject.tag == "fire")
{
if (Aimz.name == "") // "" = whatever your Aimz.name name is before you assign "crosshair" to it
{
Aimz.name = "crosshair";
// Do your "crosshair" stuff here
}
else
{
Aimz.name = "boom";
// Do your "boom" stuff here
}
}
答案 2 :(得分:0)
您是否只需在Aimz上附上一个小脚本,您可以在其中计算点击次数?使用一种方法,在x秒后将点击次数恢复为零。所以看起来有点像这样:
public int NumberOfClicks;
private bool Invoked;
void Start(){
Invoked = false;
}
void Update(){
if(NumberOfClicks == 1 && !Invoked){
gameObject.name = "crosshair";
Invoke("RevertToZero", 2);
Invoked = true;
}
if(NumberOfClicks == 2 ){
gameObject.name = "boom";
}
}
void RevertToZero(){
NumberOfClicks = 0;
Invoked = false;
}