我是统一的新手,我想做的是创建一个光线投射,它可以找到所有标记为敌人的物体,它们在我的玩家面前,如果它们在我按下 F 键时在那个区域内,它需要一些健康他们每个人,有人可以帮助我吗?这是我的代码:
using UnityEngine;
using System.Collections;
public class meleeAttack : MonoBehaviour {
public GameObject target;
public float attackTimer;
public float coolDown;
private RaycastHit hit;
// Use this for initialization
void Start () {
attackTimer = 0;
coolDown = 0.5f;
}
// Update is called once per frame
void Update () {
if(attackTimer > 0)
attackTimer -= Time.deltaTime;
if(attackTimer < 0)
attackTimer = 0;
if (Input.GetKeyUp(KeyCode.F)) {
if(attackTimer == 0)
Attack();
attackTimer = coolDown;
}
}
private void Attack() {
float distance = Vector3.Distance(target.transform.position, transform.position);
Vector3 dir = (target.transform.position - transform.position).normalized;
float direction = Vector3.Dot(dir, transform.forward);
Debug.Log(direction);
if (distance < 3 && direction > 0.5) {
enemyhealth eh = (enemyhealth)target.GetComponent("enemyhealth");
eh.AddjustCurrentHealth(-10);
}
}
}
using UnityEngine;
using System.Collections;
public class enemyhealth : MonoBehaviour {
public int maxHealth = 100;
public int currentHealth = 100;
public float healthBarLength;
// Use this for initialization
void Start () {
healthBarLength = Screen.width / 2;
}
// Update is called once per frame
void Update () {
AddjustCurrentHealth(0);
}
void OnGUI() {
GUI.Box(new Rect(10, 40, healthBarLength, 20), currentHealth + "/" + maxHealth);
}
public void AddjustCurrentHealth(int adj){
currentHealth += adj;
if (currentHealth < 0)
currentHealth = 0;
if (currentHealth > maxHealth)
currentHealth = maxHealth;
if (maxHealth < 1)
maxHealth = 1;
healthBarLength = (Screen.width / 2) * (currentHealth / (float)maxHealth);
}
}