我正在为学校制作一个“游戏”,我需要统计选票。我使用 Unity 让角色跳上按钮来计票并继续下一个问题。这是我到目前为止所拥有的:
using UnityEngine;
using System.Collections;
public class Vote1 : MonoBehaviour {
private int vote1;
public GameObject hero_1;
void Start () {
vote1 = 0;
}
void Update () {
}
void OnCollisionEnter2D(Collision2D coll) {
if (coll.gameObject.tag == "PlayerObject"){
vote1 = vote1 + 1;
print("One Vote Added");
}
}
}
This should当“hero_1”站在按钮上时添加+1,并在控制台中显示消息“已添加一票”,但事实并非如此。我究竟做错了什么?
更新了代码
现在使用 OnCollisionEnter2D,但仍然无法按预期工作。我还缺少什么?
Since print
是一个定义在MonoBehaviour
要打印到 Unity 控制台,我假设您实际上正在 Unity 控制台中查找输出,但没有显示任何内容。这意味着要么OnTriggerStay
没有被调用,或者碰撞器的根没有PlayerObject
tag.
OnTriggerStay
当 3D 物理体位于触发器内时调用。确保投票游戏对象上有 Vote1 组件,并且其碰撞器已选中“Is Trigger”。
还要确保该对象具有物理体和碰撞器not一个触发器。对象的根变换(即层次结构中没有任何父对象的根变换)应该具有PlayerObject
标签。如果玩家位于父容器内,则transform.root
将得到该父母而不是玩家本身。
另外,请确保两个项目之间的碰撞没有通过“编辑”->“项目设置”->“物理”->“图层碰撞矩阵”被过滤掉。
最后,确保一切都已启用!
Note: 您正在使用OnTriggerStay
当玩家处于触发器中时,每帧将被击中一次。如果您没有某种机制在投票后删除玩家,那么他们每秒将添加 30-60 票,具体取决于 FPS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)