小编Hal*_*gun的帖子

使用Raycast2D检测对象

我正在研究简单的策略游戏机制.我有一个军营预制件.当我在场景中添加军营并点击军营时,我收到一个NullReferenceException错误:

NullReferenceException:对象引用未设置为对象的实例PlacementController.Update()(在Assets/Scripts/PlacementController.cs:64)

当我尝试使用Raycast2D到达军营的对撞机名称时收到错误.

军营预制件有一个Box Collider2D对撞机(触发器被检查),其标签为"建筑物",其图层为"建筑物".它有一个刚体2D组件,它是一个运动刚体.

我无法弄清楚这个问题.请帮我.

谢谢你的时间.

using UnityEngine;
using System.Collections;

public class PlacementController : MonoBehaviour
{
    private Buildings buildings;
    private Transform currentBuilding;
    private bool _hasPlaced;
    public LayerMask BuildingsMask;
    public void SelectBuilding(GameObject g)
    {
        _hasPlaced = false;
        currentBuilding = ((GameObject)Instantiate(g)).transform;
        buildings = currentBuilding.GetComponent<Buildings>();
    }

bool CheckPosition()
{
    if (buildings.CollidersList.Count > 0)
    {
        return false;
    }
    return true;
}

// Update is called once per frame
void Update () {


    Vector3 m = Input.mousePosition;
    m = new Vector3(m.x, m.y, …
Run Code Online (Sandbox Code Playgroud)

unity-game-engine raycasting

3
推荐指数
1
解决办法
1万
查看次数

无法将类型对象隐式转换为 unityengine.Vector3

我想在场景中放置六个物体(球)。我认为代码看起来可行,但我收到一条控制台消息。消息:

“资产/游戏脚本/Instance.cs(26,40):错误 CS0266:无法隐式转换类型object' toUnityEngine.Vector3'。存在显式转换(您是否缺少演员表?)”

使用 UnityEngine;使用 System.Collections;

公共类实例:MonoBehaviour { 公共游戏对象球;

public ArrayList coordinateContainer = new ArrayList();



// Use this for initialization
void Start () {

    coordinateContainer.Add(new Vector3(1f,1f,1f));
    coordinateContainer.Add(new Vector3(2f,1f,1f));
    coordinateContainer.Add(new Vector3(3f,1f,1f));
    coordinateContainer.Add(new Vector3(4f,1f,1f));
    coordinateContainer.Add(new Vector3(5f,1f,1f));
    coordinateContainer.Add(new Vector3(6f,1f,1f));


    //ball.transform.position = new Vector3(1f,1f,1f);
    ball.transform.rotation = Quaternion.identity;

    for (int i = 0; i <  6; i++) {
        ball.transform.position = coordinateContainer[i];
        Instantiate(ball,ball.transform.position,ball.transform.rotation);
    }
}

// Update is called once per frame
void Update () {

}
Run Code Online (Sandbox Code Playgroud)

}

c# unity-game-engine

2
推荐指数
1
解决办法
6183
查看次数

标签 统计

unity-game-engine ×2

c# ×1

raycasting ×1