Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity如何检测特定游戏对象是否靠近您_C#_Unity3d - Fatal编程技术网

C# Unity如何检测特定游戏对象是否靠近您

C# Unity如何检测特定游戏对象是否靠近您,c#,unity3d,C#,Unity3d,我正在创建一个测试游戏,因为我准备创建我的第一个游戏,但我想确保我得到了我的第一个游戏将需要的所有简单的机制。游戏中包含的一个机制是,如果物品离你有一定的距离,就可以捡起它们。有时,游戏中可能会有多个相同的对象,我认为代码适用于所有硬币,但事实并非如此。Debug.Log()只对一个特定的硬币起作用,我如何使它在任何硬币附近都能发射? 代码: 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用UnityEngine.UI; 公共类玩家控

我正在创建一个测试游戏,因为我准备创建我的第一个游戏,但我想确保我得到了我的第一个游戏将需要的所有简单的机制。游戏中包含的一个机制是,如果物品离你有一定的距离,就可以捡起它们。有时,游戏中可能会有多个相同的对象,我认为代码适用于所有硬币,但事实并非如此。Debug.Log()只对一个特定的硬币起作用,我如何使它在任何硬币附近都能发射? 代码:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类玩家控制器:单行为{
//玩家变量
公共交通速度;
公众浮标高度;
公众浮标距离地面;
公共文本;
私人学校停课;
私人刚体;
私人游戏对象玩家;
私人游戏对象[]硬币;
私人浮动距离收集硬币;
私人浮动距离;
无效开始(){
移动速度=7f;
跳跃高度=9f;
光线照射距离地面=0.5f;
isGrounded=true;
_rgb=GetComponent();
player=GameObject.FindGameObjectWithTag(“player”);
coin=GameObject.FindGameObjectsWithTag(“coin”);
收集硬币的距离=2f;
Cursor.lockState=CursorLockMode.Locked;
}
无效固定更新(){
i接地();
Move();
跳跃();
SetMoneyText();
NearCoin();
}
//球员移动力学
无效移动(){
var moveHorizontal=Input.GetAxis(“Horizontal”)*moveSpeed*Time.fixedDeltaTime;
var moveVertical=Input.GetAxis(“垂直”)*moveSpeed*Time.fixedDeltaTime;
transform.Translate(移动水平、0f、移动垂直);
if(Input.GetKeyDown(KeyCode.Escape)){
Cursor.lockState=CursorLockMode.None;
}
}
//运动员跳跃力学
无效跳转(){
var jump=新向量3(0f,rgb.position.y,0f);
if(Input.GetKey(KeyCode.Space)和&isground==true){

for(float i=0;i看起来你只是把一些东西括错了。你需要将if语句移动到for循环中。现在它只检查数组中最后一个硬币的距离

void NearCoin() 
{
    for (int i = 0; i < coin.Length; i++) 
    {
        distanceToCoin = Vector3.Distance(coin[i].transform.position, player.transform.position);

        if (distanceToCoin < distanceToCollectCoin) 
            Debug.Log("Near Coin");
    }
}
void NearCoin()
{
for(int i=0;i
void NearCoin() 
{
    for (int i = 0; i < coin.Length; i++) 
    {
        distanceToCoin = Vector3.Distance(coin[i].transform.position, player.transform.position);

        if (distanceToCoin < distanceToCollectCoin) 
            Debug.Log("Near Coin");
    }
}