以下是一个简单的Unity脚本,可以实现敌人进入角色攻击范围后向左发射子弹的功能:

using UnityEngine;

public class AttackController : MonoBehaviour
{
    public Transform player; // 角色的Transform组件
    public Transform firePoint; // 发射子弹的位置
    public GameObject bulletPrefab; // 子弹的预制体
    public float attackRange = 5f; // 攻击范围
    public float attackInterval = 0.5f; // 攻击间隔

    private bool isAttacking = false; // 是否正在攻击
    private float lastAttackTime = 0f; // 上次攻击时间

    void Update()
    {
        // 计算敌人和角色的距离
        float distanceToPlayer = Vector3.Distance(transform.position, player.position);

        // 如果敌人进入角色攻击范围,并且攻击间隔已经过去
        if (distanceToPlayer <= attackRange && Time.time - lastAttackTime >= attackInterval)
        {
            // 开始攻击
            isAttacking = true;
            lastAttackTime = Time.time;
        }
        else
        {
            // 停止攻击
            isAttacking = false;
        }

        // 如果正在攻击
        if (isAttacking)
        {
            // 计算子弹发射方向
            Vector3 direction = (firePoint.position - player.position).normalized;

            // 发射子弹
            GameObject bullet = Instantiate(bulletPrefab, firePoint.position, Quaternion.identity);
            bullet.GetComponent<Rigidbody2D>().velocity = direction * 10f;
        }
    }
}

该脚本需要挂载在敌人对象上,需要设置以下公共变量:

  • player:角色的Transform组件
  • firePoint:发射子弹的位置(可以通过在敌人模型上添加一个子对象来实现)
  • bulletPrefab:子弹的预制体
  • attackRange:攻击范围
  • attackInterval:攻击间隔

当敌人进入角色攻击范围后,脚本会每隔一定时间发射一颗子弹,直到敌人离开攻击范围为止。子弹的发射方向是从敌人到发射点的方向,发射速度为10


原文地址: https://www.cveoy.top/t/topic/coJn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录