我已经执行了ac#脚本来添加mana到滑块上的ontriggerEnter和Subtract mana on trigguerExit wen touch on Enemy object,但它似乎有些不对劲,脚本没有错误但是它触及了它的敌人对象所有的法术力,而不是我设定的价值。 我是c#scripting的新手,提前坦克你。 这是我的剧本
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class mana : MonoBehaviour {
public void addmana()
{
manaBar.value += 300;
}
public void Takemana()
{
manaBar.value -= 30;
}
public Slider manaBar;
// Use this for initialization
void Start ()
{
manaBar.value = 300;
if (manaBar != null)
{
manaBar.IsActive();
}
}
void OnTriggerEnter(Collider other)
{
// The switch statement checks what tag the other gameobject is, and reacts accordingly.
switch (other.gameObject.tag)
{
case "manapickup":
Debug.Log(other.gameObject.tag);
Invoke("addmana", 0f);
Destroy (other.gameObject);
break;
}
// Finally, this line destroys the gameObject the player collided with.
//Destroy(other.gameObject);
}
void OnTriggerExit(Collider other)
{
// The switch statement checks what tag the other gameobject is, and reacts accordingly.
switch (other.gameObject.tag)
{
case "Enemy":
Debug.Log(other.gameObject.tag);
Invoke("Takemana", 0f);
break;
}
// Finally, this line destroys the gameObject the player collided with.
//Destroy(other.gameObject);
}
答案 0 :(得分:0)
查看您的代码似乎问题可能来自您的 Slider 组件:您确定其 maxValue 属性设置为正确的值吗?
(默认情况下,此值设置为 1 :您可以在检查器中更改它或以编程方式调用manaBar.maxValue = 1000.0f;
)
另外,我建议您在case "Enemy": [...]
方法的switch
内移动脚本的OnTriggerEnter
部分:我认为在OnTriggerExit
内调用它没有任何好处方法(但我可能会错,取决于你的游戏逻辑)。
总结的一些附注:
Enemy
),而另一个标签是manapickup
)。