C# 与敌人碰撞造成损害
我在团结方面遇到了一些问题。我试图让它,如果一个敌人与玩家碰撞,玩家失去一个生命点。我的C#代码如下 在你看代码之前,我想说敌人是刚体,所以物体子弹可以影响他们。我制作了一个额外的胶囊作为玩家身体的一部分,可以是一个刚体,这样代码就可以检测碰撞。你认为这样行吗?我不确定刚体是否更容易检测到另一个刚体碰撞,或者它是否不在乎C# 与敌人碰撞造成损害,c#,unity3d,C#,Unity3d,我在团结方面遇到了一些问题。我试图让它,如果一个敌人与玩家碰撞,玩家失去一个生命点。我的C#代码如下 在你看代码之前,我想说敌人是刚体,所以物体子弹可以影响他们。我制作了一个额外的胶囊作为玩家身体的一部分,可以是一个刚体,这样代码就可以检测碰撞。你认为这样行吗?我不确定刚体是否更容易检测到另一个刚体碰撞,或者它是否不在乎 public class playerhealth : MonoBehaviour { private int curHealth; private int
public class playerhealth : MonoBehaviour {
private int curHealth;
private int playerLives;
public GUIText winText;
public GUIText healthText;
public GUIText livesText;
void Start() {
curHealth = 3;
playerLives = 3;
SetHealthText();
SetLivesText();
winText.text = "";
}
void FixedUpdate()
{
// where physics codes go
}
// HERE'S WHERE THE COLLISIONS STUFF IS
void OnCollisionEnter(Collider rigidbody) {
if (rigidbody.gameObject.tag == "Enemy") {
curHealth = curHealth - 1;
SetHealthText();
}
if (rigidbody.gameObject.tag == "reloader") {
playerLives = playerLives - 1;
SetLivesText();
}
}
// setting GUI TEXT and reloading level
void SetHealthText() {
healthText.text = "Health Points: " + curHealth.ToString();
if (curHealth <= 0) {
Application.LoadLevel("shootingworld");
playerLives = playerLives - 1;
}
if(curHealth >= 10) {
playerLives+= 1;
}
}
void SetLivesText() {
livesText.text = "Lives: " + playerLives.ToString();
if (playerLives <= 0) {
winText.text = "GAME OVER";
}
}
}
公共级玩家健康:单一行为{
私人卫生;
私人娱乐场所;
公共吉他文本;
公共文本;
公共吉他文本livesText;
void Start(){
curHealth=3;
playerLives=3;
SetHealthText();
SetLivesText();
winText.text=“”;
}
void FixedUpdate()
{
//物理代码去哪里
}
//这里是碰撞的地方
无效碰撞中心(碰撞器刚体){
if(rigidbody.gameObject.tag==“敌人”){
curHealth=curHealth-1;
SetHealthText();
}
if(rigidbody.gameObject.tag==“重载器”){
playerLives=playerLives-1;
SetLivesText();
}
}
//设置GUI文本和重新加载级别
void SetHealthText(){
healthText.text=“健康点:”+curHealth.ToString();
如果(curHealth=10){
playerLives+=1;
}
}
void SetLivesText(){
livesText.text=“生活:”+playerLives.ToString();
如果(playerLives你在这里做了一些假设,其中一些是错误的,我会试着指出它们
将一个刚体添加到一个游戏对象是正确的想法,但它是Collider组件决定对象碰撞的形状和大小。考虑添加BOXCurror,SkyCuloLIDER或CycCeLoLIDE两者。
我想你很难让物体真正碰撞,这可能是解决办法
而且
您命名为“rigidbody”的参数不能保证是刚体组件。根据
碰撞类包含有关接触点、碰撞速度等的信息
的正确语法具有碰撞参数,而不是碰撞器
要访问碰撞器上的刚体,您必须对碰撞器找到的对象使用getcomponent,并检查刚体组件是否存在。我不确定这是您想要的,但应该检查误导性的参数名称
不管怎样,你对按标签比较对撞机游戏对象的想法是正确的。你所需要做的就是在编辑器中或通过代码在对象上强制执行标签。你在这里做了许多假设,其中一些是错误的。我将试着指出它们
将一个刚体添加到一个游戏对象是正确的想法,但它是Collider组件决定对象碰撞的形状和大小。考虑添加BOXCurror,SkyCuloLIDER或CycCeLoLIDE两者。
我想你很难让物体真正碰撞,这可能是解决办法
而且
您命名为“rigidbody”的参数不能保证是刚体组件。根据
碰撞类包含有关接触点、碰撞速度等的信息
的正确语法具有碰撞参数,而不是碰撞器
要访问碰撞器上的刚体,您必须对碰撞器找到的对象使用getcomponent,并检查刚体组件是否存在。我不确定这是您想要的,但应该检查误导性的参数名称
无论如何,您对按标记比较碰撞器游戏对象的想法是正确的。您只需在编辑器中或通过代码在对象上强制执行标记即可。您使用的是:
void OnCollisionEnter(Collider collision) {
}
对撞机用于对撞机
试试这个:
void OnCollisionEnter(Collision collision) {
}
希望有此帮助!:)您正在使用此:
void OnCollisionEnter(Collider collision) {
}
对撞机用于对撞机
试试这个:
void OnCollisionEnter(Collision collision) {
}
希望这有帮助!:) 你试着去做,这可能也有帮助
void OnCollisionEnter(Collision collision)
{
}
文件是:
您尝试这样做也可能有帮助
void OnCollisionEnter(Collision collision)
{
}
文件是: