-1

我一直试图让我的敌人在它的生命值归零时倒下。所以我做了一个伤害变量。伤害会减少生命值,当它达到零或更低时,他应该变成布娃娃。但似乎他一开始并没有死。

在枪脚本中:

using UnityEngine;

public class gun : MonoBehaviour
{

    public float damage = 10f;
    public float range = 100f;

    public Camera Cam;

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Fire();
        }
        
        void Fire()
        {
            RaycastHit hit;
            if(Physics.Raycast(Cam.transform.position, Cam.transform.forward, out hit, range))
            {
                Debug.Log(hit.transform.name);
                
                Enemy enemy = hit.transform.GetComponent<Enemy>();
                if (enemy != null)
                {
                    enemy.damage(damage);
                }
            }
        }
    }
}

现在在敌人脚本中:

using System.Collections;
using System.Collections.Generic;
using System.Net.Sockets;
using UnityEngine;

public class Enemy : MonoBehaviour
{
    Animator myAnim;

    List<Rigidbody> ragdollRigids;



    public float health = 100f;
    public void damage (float amount)
    {
        health -= amount;
        if(health <= 0)
        {
            Death();
        }
    }

    void Death()
    {
        activateRagdoll();
    }

    //Update

    void Start()
    {
        myAnim = GetComponent<Animator>();
        ragdollRigids = new List<Rigidbody>(transform.GetComponentsInChildren<Rigidbody>());
        ragdollRigids.Remove(GetComponent<Rigidbody>());
        DeactivateRagdoll();
       
    }

    
    void Update()
    {
        
    }


    //Ragdoll dependencies.

    public void activateRagdoll()
    {
        myAnim.enabled = false;
        for (int i = 0; i < ragdollRigids.Count; i++)
        {
            ragdollRigids[i].useGravity = true;
            ragdollRigids[i].isKinematic = false;
        }
    }

    public void DeactivateRagdoll()
    {
        myAnim.enabled = true;
        for (int i = 0; i < ragdollRigids.Count; i++)
        {
            ragdollRigids[i].useGravity = false;
            ragdollRigids[i].isKinematic = true;
        }
    }
}

先感谢您。:)

4

1 回答 1

0

解决方案

您的变量 (damageamount) 命名不同,但用于相同目的。我已经编辑了你的代码。应该没有错误。如果有,请联系我对我的回答发表评论。

代码

枪:

using UnityEngine;

public class gun : MonoBehaviour
{

    public float damage = 10f;
    public float range = 100f;

    public Camera Cam;

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Fire();
        }
        
        void Fire()
        {
            RaycastHit hit;
            if(Physics.Raycast(Cam.transform.position, Cam.transform.forward, out hit, range))
            {
                Debug.Log(hit.transform.name);
                
                Enemy enemy = hit.transform.GetComponent<Enemy>();
                if (enemy != null)
                {
                    enemy.damage(damage);
                }
            }
        }
    }
}

敌人:

using System.Collections;
using System.Collections.Generic;
using System.Net.Sockets;
using UnityEngine;

public class Enemy : MonoBehaviour
{
    Animator myAnim;

    List<Rigidbody> ragdollRigids;



    public float health = 100f;
    public void damage (float damage)
    {
        health -= damage;
        if(health <= 0)
        {
            Death();
        }
    }

    void Death()
    {
        activateRagdoll();
    }

    //Update

    void Start()
    {
        myAnim = GetComponent<Animator>();
        ragdollRigids = new List<Rigidbody>(transform.GetComponentsInChildren<Rigidbody>());
        ragdollRigids.Remove(GetComponent<Rigidbody>());
        DeactivateRagdoll();
       
    }

    
    void Update()
    {
        
    }


    //Ragdoll dependencies.

    public void activateRagdoll()
    {
        myAnim.enabled = false;
        for (int i = 0; i < ragdollRigids.Count; i++)
        {
            ragdollRigids[i].useGravity = true;
            ragdollRigids[i].isKinematic = false;
        }
    }

    public void DeactivateRagdoll()
    {
        myAnim.enabled = true;
        for (int i = 0; i < ragdollRigids.Count; i++)
        {
            ragdollRigids[i].useGravity = false;
            ragdollRigids[i].isKinematic = true;
        }
    }
}
于 2020-08-23T09:18:03.690 回答