我是编码新手。我只是试着编写一个小游戏,似乎有一个我无法修复的错误。有人能帮我吗
这是我的脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class animation : MonoBehaviour
{
Animator Ani;
public Transform attackPoint;
public float attackRange = 0.5f;
public LayerMask enemyLayers;
void Start()
{
Ani = GetComponent<Animator>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}
foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
}
}
我该怎么修?
既然你做了
if (Input.GetKeyDown(KeyCode.Space))
{
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}
变量hitEnemies
仅存在于该if
块内的范围中
=>你想把其他代码也移到那里:
if (Input.GetKeyDown(KeyCode.Space))
{
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
}
或者有一个始终存在的变量。。。然后再次检查(我更喜欢第一种方式)
Collider2D[] hitEnemies = null;
if (Input.GetKeyDown(KeyCode.Space))
{
Ani.SetTrigger("attack");
hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}
if(hitEnemies != null)
{
foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
}
当前上下文中不存在名称"hitEnemies">
当前上下文:
foreach(Collider2D enemy in hitEnemies)
{
Debug.Log("hit" + enemy.name);
}
哪里存在?:
if (Input.GetKeyDown(KeyCode.Space))
{
Ani.SetTrigger("attack");
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
}
只需移动变量所在的位置。