Closed6

Low Poly Shooter Pack

trefuntrefun

仕組み

まずは Low Poly Shooter Pack 側が何処で当たり判定出してるか。

武器の Prefabs にアタッチされている Weapon.cs をみると Fire 関数がありそこで projectile を生成して飛ばしている。
Prefabs の Projectaile ディレクトリを見ると中には各種武器の弾の prefabs があり Projectile.cs がアタッチされていることがわかる。

Projectile.cs 内部には OnCollisionEnter があり、ここで当たった時の判定を追加できそう。

EmerldAI 側はここ
https://github.com/Black-Horizon-Studios/Emerald-AI/wiki/Setting-up-Custom-Damage-with-Emerald-AI#setting-up-custom-damage-with-emerald-ai

trefuntrefun

コード修正

Projectile.csOnCollisionEnter 関数の最後に下記を加えると AI にダメージを与えられることを確認

using EmeraldAI;
//~~中略~~
[Tooltip("Damage value for AI")]
public float hitDamage;
//~~中略~~
//Collides with "Respawn" tag
if (collision.transform.tag == "Respawn")
{
	int hitDamage = 10;
				
	if (collision.transform.gameObject.GetComponent<EmeraldAI.EmeraldAISystem>() != null)
	{
    	EmeraldAI.EmeraldAISystem EmeraldComponent = collision.transform.gameObject.GetComponent<EmeraldAI.EmeraldAISystem>();
    	EmeraldComponent.Damage( hitDamage, EmeraldAI.EmeraldAISystem.TargetType.Player, collision.transform, 400);
	}

	//Destroy bullet object
	Destroy(gameObject);
}

EmeraldAI.EmeraldAISystem.TargetType.AI にすると攻撃を当てた側がバグる

trefuntrefun

RPGやグレネードは下記で変更

ProjectileScript.cs & GrenadeScript.cs

using EmeraldAI;
//~~中略~~
[Tooltip("Damage value for AI")]
public float hitDamage;
//~~中略~~
if (hit.GetComponent<Collider>().tag == "Respawn")
{
	if (hit.gameObject.GetComponent<EmeraldAI.EmeraldAISystem>() != null)
	{
    	EmeraldAI.EmeraldAISystem EmeraldComponent = hit.gameObject.GetComponent<EmeraldAI.EmeraldAISystem>();
    	EmeraldComponent.Damage( hitDamage, EmeraldAI.EmeraldAISystem.TargetType.AI, player.transform, 400);
	}
}
trefuntrefun

Reload

Weapon のリロード時にはアニメーションの EventOnAmmunitionFill が呼ばれているので、主にここの書き換えで弾薬管理実装可能。

このスクラップは2022/06/27にクローズされました