要么脚本是过时的,要么它不是我需要的,但我找不到答案。
首先,我制作了一个弹球风格的游戏,当球击中一个棋子时,它会改变颜色,但是我有多个彩色球,我想把颜色锁定在适当的位置,以免其他球改变它们(使游戏更容易一点)。我提供了一个脚本,对于一个简单的解决方案来说,这个脚本可能有点太复杂了。问题区域在void FixedUpdate底部。
(我只想更改一个标签):)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColorBlue : MonoBehaviour
{
public Material mat;
public string ballTag;
public bool reset = false;
public bool found = false;
public void OnCollisionEnter (Collision collisionInfo)
{
if (collisionInfo.collider.tag == "Ball" )
{
gameObject.GetComponent<MeshRenderer>().material.color = Color.blue;
reset = true;
}
}
public void FixedUpdate ()
{
if(reset)
{
GameObject.FindWithTag("Ball");
} found = true;
if(found)
{
GameObject.FindWithTag("Ball").tag = "Untagged";
}
}
}
1条答案
按热度按时间ffscu2ro1#
与其搜索带有“球”标签的游戏对象,你可能在场景中有多个关闭。你可以在碰撞发生时直接改变标签。
因为在OnCollisionEnter函数中,您已经有了对gameObject的引用,您可以使用它来更改
collisionInfo.gameObject.tag = "Untagged"
标记。你也可以添加额外的代码来改变颜色,这取决于游戏对象的当前颜色。另外,我建议你使用
CompareTag()
,它会检查标签是否存在于你的场景中。如果你想得到碰撞的gameObject,你可以用
collisionInfo.gameObject.tag