這是到目前為止我的游戲的影像,以便您可以更好地了解,但我需要它,以便當其中一個外部膠囊接觸紅色框時,玩家(中間膠囊)會失去健康。
我嘗試創建一個新腳本來檢查碰撞,但我無法讓它作業并且不確定從這里去哪里。下面是我的代碼,用于說明生命值條的作業原理,按下空格鍵會降低生命值以進行演示。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerHealth : MonoBehaviour
{
public float MaxHealth;
public Slider _slide;
private float currentHealth;
void Start()
{
currentHealth = MaxHealth;
_slide.maxValue = MaxHealth;
_slide.value = MaxHealth;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
TakeDamage(25f);
if(currentHealth <=0)
{
//move to game over
}
}
void TakeDamage(float Damage)
{
currentHealth = currentHealth - Damage;
_slide.value = currentHealth;
}
}
有一次我嘗試使用
void Update()
{
(collision.collider.name == "Barrier");
TakeDamage(25f);
if(currentHealth <=0)
{
//move to game over
}
}
但意識到這是完全錯誤的,并試圖在紅色“障礙”上添加一個盒子對撞機來幫助這一點,但它沒有解決任何問題。
更新 2:還嘗試更改它,使敵人向障礙物而不是玩家移動并添加代碼:
private void OnTriggerEnter(Collider other) {
TakeDamage(25f);
if(currentHealth <=0)
{
//move to game over
}
}
它不會出現任何錯誤,而是什么都不做。敵人的膠囊只是穿過它并到達中心,沒有失去健康。
uj5u.com熱心網友回復:
您需要使用檢查碰撞OnCollisionEnter2D,然后使用其中的TakeDamage函式。這是一個例子:
public class PlayerHealth: MonoBehaviour
{
void OnCollisionEnter2D(Collision2D col) //Check for 2d collision
{
TakeDamage(25f);
}
}
請注意,要使此功能起作用,兩個物件都需要 2d 對撞機和剛體。如果您不想讓角色跌落,只需將重力設定為 0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/424499.html
