Files
MMORPG/Packages/com.unity.inputsystem/Samples~/RebindingUI/Game/Enemy.cs
cooney ce83f21c93 UI 자동화를 위해 바인딩 기능 구현
- 유니티 에셋 인증 오류로 meta 재생성
2026-01-25 01:31:34 +09:00

62 lines
2.1 KiB
C#

using UnityEngine.Pool;
namespace UnityEngine.InputSystem.Samples.RebindUI
{
/// <summary>
/// A simple enemy for the mini-game.
/// </summary>
public class Enemy : MonoBehaviour
{
[Tooltip("The rotation animation target")]
public GameObject animationTarget;
[Tooltip("The target that the enemy will seek, e.g. player transform")]
public Transform target;
[Tooltip("The rotation speed around the X-axis")]
public float rotationSpeedX = 130.0f;
[Tooltip("The rotation speed around the Y-axis")]
public float rotationSpeedY = 100.0f;
[Tooltip("The movement speed")]
public float speed = 1.0f;
[Tooltip("The explosion color")]
public Color explosionColor = new Color(0.8711135f, 0.5424528f, 1.0f);
public IObjectPool<Enemy> pool;
[HideInInspector] public GameplayManager manager;
private void OnCollisionEnter(Collision other)
{
// If we are hit by a bullet apply force
if (other.gameObject.GetComponent<Bullet>())
{
manager.KillEnemy();
manager.Explosion(animationTarget.transform, other.GetContact(0).point, 0.1f, explosionColor);
pool.Release(this);
}
}
// Update is called once per frame
private void Update()
{
// Animate rotation
if (animationTarget)
{
animationTarget.transform.Rotate(Vector3.up, rotationSpeedX * Time.deltaTime, Space.World);
animationTarget.transform.Rotate(Vector3.right, rotationSpeedY * Time.deltaTime, Space.World);
}
// Animate movement towards target
if (target)
transform.position += (target.position - transform.position).normalized * (Time.deltaTime * speed);
// Handle enemies getting lost in the world and make them wrap-around
if (manager.TryTeleportOrthographicExtents(transform.position, out var result))
transform.position = result;
}
}
}