C# 当我只想减一的时候,单位减去额外的数字
我想做的是,当它击中一个触发碰撞器时,我希望它减去一个C# 当我只想减一的时候,单位减去额外的数字,c#,unity3d,unity5,C#,Unity3d,Unity5,我想做的是,当它击中一个触发碰撞器时,我希望它减去一个int,但是unity所做的是用3减去它,我把它连接到播放器本身 lifecontroller lves; public GameObject gm; CoinScript coins; // Use this for initialization void Start () { gm = GameObject.FindGameObjectWithTag("GM"); coins = gm.GetComponent<C
int
,但是unity所做的是用3减去它,我把它连接到播放器本身
lifecontroller lves;
public GameObject gm;
CoinScript coins;
// Use this for initialization
void Start () {
gm = GameObject.FindGameObjectWithTag("GM");
coins = gm.GetComponent<CoinScript>();
lves = gm.GetComponent<lifecontroller>();
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Evil")
{
lves.lives -= 1;
Debug.Log("U hit it");
}
}
// Update is called once per frame
void Update () {
if(lves.lives == 0)
{
Debug.Log("u died");
}
}
lifes;
公共游戏对象;
硬币;
//用于初始化
无效开始(){
gm=GameObject.FindGameObjectWithTag(“gm”);
coins=gm.GetComponent();
lves=gm.GetComponent();
}
无效OnTiggerEnter2D(碰撞的R2D其他)
{
if(other.tag==“邪恶”)
{
lves.lifes-=1;
Log(“U命中它”);
}
}
//每帧调用一次更新
无效更新(){
如果(lves.lives==0)
{
Log(“u死了”);
}
}
从屏幕截图判断,您的脚本多次附加到玩家游戏对象。选择您的玩家游戏对象,并删除重复的脚本。
确保只有一个脚本附加到它。它可能被连接到那里3次
如果您在运行时实例化多个玩家游戏对象,也会发生此问题,因为这也会复制您的脚本
编辑:
在您的评论中有更新的图像,问题是您的播放器上有3个对撞机。确实,只有一个是由IsTrigger
制作的,但是如果带有Evil标签的游戏对象也被标记为IsTrigger
,这就是一个问题
您有2个选项来解决此问题:
1。选择带有邪恶标签的游戏对象,并确保没有连接到它的碰撞器被标记为IsTrigger
。取消检查所有IsTrigger
所有Evil标记的游戏对象的碰撞器上的属性。这会解决你的问题
2.玩家游戏对象上只有一个碰撞器。拆下另外2个。这将再次解决您的问题。从屏幕截图判断,您的脚本已多次附加到玩家游戏对象。选择您的玩家游戏对象,并删除重复的脚本。 确保只有一个脚本附加到它。它可能被连接到那里3次 如果您在运行时实例化多个玩家游戏对象,也会发生此问题,因为这也会复制您的脚本 编辑: 在您的评论中有更新的图像,问题是您的播放器上有3个对撞机。确实,只有一个是由
IsTrigger
制作的,但是如果带有Evil标签的游戏对象也被标记为IsTrigger
,这就是一个问题
您有2个选项来解决此问题:
1。选择带有邪恶标签的游戏对象,并确保没有连接到它的碰撞器被标记为IsTrigger
。取消检查所有IsTrigger
所有Evil标记的游戏对象的碰撞器上的属性。这会解决你的问题
2.玩家游戏对象上只有一个碰撞器。拆下另外2个。这将再次解决您的问题。这是我建议调试您的问题的方法:
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Evil")
{
lves.lives -= 1;
Debug.Log("U hit it", other.gameObject);
}
}
通过查看您的屏幕截图,您将获得3条日志消息
始终使用控制台窗口中的“请勿折叠”来查看发生了什么情况
我建议您调试问题:
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Evil")
{
lves.lives -= 1;
Debug.Log("U hit it", other.gameObject);
}
}
通过查看您的屏幕截图,您将获得3条日志消息
始终使用控制台窗口中的“请勿折叠”来查看发生了什么情况
触发器肯定会发生3次,您的屏幕截图显示(右侧有3次,因为重复日志会被折叠)
这可能是因为碰撞器的形状(圆形)。尝试使用我们在触发器进入时设置的bool和在触发器退出时清除的bool(或者更新应该可以清除)。触发器确实发生了3次,您的屏幕截图显示了这一点(右侧有一个3,因为重复日志被折叠)
这可能是因为碰撞器的形状(圆形)。尝试使用我们在触发器进入时设置的bool和在触发器退出时清除的bool(甚至更新应该可以清除)。您的代码很好。您可能已经将此脚本附加到了其他游戏对象。不,它不是我甚至重新编写了您可以在控制台窗口中看到的“U hit it”日志。有一点可以肯定,拥有这个脚本在这里不是问题。您的播放机上可能不止一次出现此脚本。要使脚本正常工作,需要将脚本附加到播放机上,否则它将无法工作,我检查了它不存在的每个对象:/n您的代码很好。您可能已经将此脚本附加到了其他游戏对象。不,它不是我甚至重新编写了您可以在控制台窗口中看到的“U hit it”日志。有一点可以肯定,拥有这个脚本在这里不是问题。您的播放机上可能不止一次出现此脚本。如果要使脚本正常工作,需要将其附加到播放机上,否则它将无法正常工作,并且我检查了它不存在的每个对象:/正如我多次说过的,它没有附加多次:p您说它在评论部分已修复。那么问题出在哪里呢?什么修复了它?不,这不是因为lese saidI在查看你的图像后发现了你的问题。我可以通过这些设置复制您的问题。向下滚动我的答案并检查其中的编辑。你有两个选择来解决这个问题。让我知道结果。谢谢它工作对撞机是问题所在谢谢:)正如我多次说的,它没有连接多次:pYou说它在评论部分是固定的。那么问题出在哪里呢?什么修复了它?不,这不是因为lese saidI在查看你的图像后发现了你的问题。我可以复制你的问题和那些