添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
struct CubePos(0, 1, 0); public float cubeChangePlaceSpeed = 0.5f; public Transform cubeToPlace private List<Vector3> allCubesPosition = new List<Vector3> new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(-1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 0), new Vector3(-1, 0, -1), new Vector3(1, 0, 1), new Vector3(0, 0, -1), new Vector3(1, 0, -1), private void Start() StartCoroutine(ShowCubePlace()); IEnumerator ShowCubePlace() while(true) SpawnPosition(); yield return new WaitForSeconds(cubeChangePlaceSpwwd) private void SpawnPosition() List<Vector3> position = new List<Vector3>(); if (IsPositionEmpty(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z))) position.Add(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z))) position.Add(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z))) position.Add(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z))) position.Add(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1))) position.Add(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1)); if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z - 1))) position.Add(new Vector3(nowCube.x, nowCube.y, nowCube.z - 1)); cubeToPlace.position = position[UnityEngineRandom.Range(0, positions.Count)] private bool IsPositionEmpty(Vector3 targetPos) if (targetPos.y == 0) return false; foreach(Vector3 pos in allCubesPositions) if (pos.x == targetPos.x && pos.y == targetPos.y && pos.z == targetPos.z) return false; return true; public int x, y, z; public CubePos(int x, int z, int z) this.x = x; this.y = y; this.z = z; public Vector3 getVector() return new Vector3(x, y, z); public void setVector(Vector3 pos) x = Convert.ToInt32(pos.x); y = Convert.ToInt32(pos.y); z = Convert.ToInt32(pos.z); Вопрос задан более двух лет назад Все ошибки говорят, что конкретно в этой строчки ты написал лажу. Зачем эта простыня текста?
Сделайте форматирование и найдите ошибку. Написано более двух лет назад Ошибка в том, что ты криво скопировал код, и объявление структуры struct CubePos отделилось от определения.
Вот попытался исправить:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
public class GameController: MonoBehaviour {
	public float cubeChangePlaceSpeed = 0.5f;
	public Transform cubeToPlace;
	private List<Vector3> allCubesPosition = new List {
		new Vector3(0, 0, 0),
		new Vector3(1, 0, 0),
		new Vector3(-1, 0, 0),
		new Vector3(0, 1, 0),
		new Vector3(0, 0, 0),
		new Vector3(-1, 0, -1),
		new Vector3(1, 0, 1),
		new Vector3(0, 0, -1),
		new Vector3(1, 0, -1),
	private void Start() {
		StartCoroutine(ShowCubePlace());
	IEnumerator ShowCubePlace() {
		while (true) {
			SpawnPosition();
			yield return new WaitForSeconds(cubeChangePlaceSpwwd)
	private void SpawnPosition() {
		List position = new List();
		if (IsPositionEmpty(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z))) position.Add(new Vector3(nowCube.x + 1, nowCube.y, nowCube.z));
		if (IsPositionEmpty(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z))) position.Add(new Vector3(nowCube.x - 1, nowCube.y, nowCube.z));
		if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z))) position.Add(new Vector3(nowCube.x, nowCube.y + 1, nowCube.z));
		if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z))) position.Add(new Vector3(nowCube.x, nowCube.y - 1, nowCube.z));
		if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1))) position.Add(new Vector3(nowCube.x, nowCube.y, nowCube.z + 1));
		if (IsPositionEmpty(new Vector3(nowCube.x, nowCube.y, nowCube.z - 1))) position.Add(new Vector3(nowCube.x, nowCube.y, nowCube.z - 1));
		cubeToPlace.position = position[UnityEngineRandom.Range(0, positions.Count)]
	private bool IsPositionEmpty(Vector3 targetPos) {
		if (targetPos.y == 0) return false;
		foreach(Vector3 pos in allCubesPositions) {
			if (pos.x == targetPos.x && pos.y == targetPos.y && pos.z == targetPos.z) return false;
		return true;
// CubePos удалил, тк он не используется, и смысла в нём нет
Ответ написан более двух лет назад