Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты на Unity

Ответ
 
Опции темы
Старый 22.07.2016, 23:22   #1
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Mistshift Обучение

Вот набросал для RTS как всё выглядеть должно.
Unity скачал.
Создал сферу.
А как туман вокруг неё сделать? Чтобы он собирался харвестером.


Миниатюры
Нажмите на изображение для увеличения
Название: Mistshift.png
Просмотров: 1030
Размер:	165.3 Кб
ID:	22435  
(Offline)
 
Ответить с цитированием
Старый 23.07.2016, 01:20   #2
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

На юнити не работает математика, а почему я не понимаю…
Вот GofL cамый живучий вариант.

Blitz3D
Graphics 640,480,16,2

Const UPS=60

Global x_grid
Global y_grid


x_grid=77
y_grid=77

Dim g1%(x_grid,y_grid)
Dim g2%(x_grid,y_grid)
Dim cube(x_grid,y_grid)


period=1000/UPS
time=MilliSecs()-period

For x=0 To x_grid
 For y=0 To y_grid
  g1%(x,y)=Rand(0,1)
Next
Next

Repeat
	Repeat
		elapsed=MilliSecs()-time
	Until elapsed	
	ticks=elapsed/period
	tween#=Float(elapsed Mod period)/Float(period)
	
	For k=1 To ticks
		time=time+period	
		If KeyHit(1) End
		gen()
		
	Next
	
	Flip
	
	Cls
Forever

Function gen()

  For x=1 To x_grid-1
    For y=1 To y_grid-1

     c=0
      
   For x1=-1 To 1
      For y1=-1 To 1
        
       If (x1)<>0 Or (y1)<>0 
            c=c+g1%((x1)+x,(y1)+y)
       EndIf
	    
     Next 
   Next

   If c<2 Or c>3 Then c=0

   If c=2 Then c=g1%(x,y)
   
   If c>2 Then c=1

    g2%(x,y)=c
    
If g1%(x,y)=1
		
Plot x*2,y*2

	          EndIf
	g1%(x-1,y-1)=g2%(x-1,y-1)
	
    Next 
  Next 

End Function
Порт ~ Unity
using UnityEngine;
using System.Collections;

public class LG : MonoBehaviour {
	
	public int[,] g1 = new int[77,77];
	public int[,] g2 = new int[77,77];

	public GameObject[,] cube = new GameObject[77,77];

	public int x_grid=77;
	public int y_grid=77;
	
	private int c=0;
	



	void Start () {

	                  	for (int x = 0; x < x_grid; x++) {
			            for (int y = 0; y < y_grid; y++) {
		
				cube[x,y] = GameObject.CreatePrimitive (PrimitiveType.Cube);
		
				cube[x,y].transform.position = new Vector3 (x * 2, 0, y * 2);
				cube[x,y].transform.localScale = new Vector3 (2, 2, 2);
				cube[x,y].renderer.material.color = new Color(x *0.1f,0,y *0.1f);
				g1[x,y]=Random.Range(0, 1);




						}

				}

			
		}



	void Update () {

		//gen()
				
		for (int x =1; x < x_grid-1; x++) {
			for (int y = 1; y < y_grid-1; y++) {

				c=0;


		for (int x1 = -1; x1 < 1; x1++) {
		 for (int y1 = -1; y1 < 1; y1++) {


						if (x1<0 || x1>0 || y1<0 || y1>0){c+=g1[x+x1,y+y1];}


		 }
		}
			
				if (c<2 || c>3){c=0;}
				
				if (c>=2){c=g1[x,y];}
				
				
				if (c>2) {c=1;}



				g2[x,y]=c;

				
				if (g1[x,y]>=1) {	    
					
					cube[x,y].active= true;
				
					
				}
				else{
					
					cube[x,y].active= false;
					
					
					
				}
				
				g1[x-1,y-1]=g2[x-1,y-1];



					}
				} 
			

		//gen()

	}



}
Трансляция: https://www.twitch.tv/foxymist
Вложения
Тип файла: exe game of life.exe (1.26 Мб, 814 просмотров)
(Offline)
 
Ответить с цитированием
Старый 23.07.2016, 02:43   #3
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Всё, на сегодня я закончил, 1:0 в пользу Unity(Первый день разработки прошел удачно). Всё против меня, обс тормозит, лг не считает, Unity3D.
Надо поспать и начать сначала. Да новых встреч.
С вами был Foxymist - программист, мой член стал больше на целый миллиметр.
(Offline)
 
Ответить с цитированием
Старый 23.07.2016, 13:51   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Mistshift Обучение

На юнити не работает математика
Вряд ли кто-то будет ползать с лупой по чужому коду, выискивая, что же не так.
Выводи по очереди в лог (DebugLog на Блице и Debug.Log на Юнити) все значения, которые ты вычисляешь и обнаружишь в каком месте ошибка.

Кстати вместо этого:

	public int[,] g1 = new int[77,77];
	public int[,] g2 = new int[77,77];

	public GameObject[,] cube = new GameObject[77,77];
Можно и нужно применять ООП, потому что в таком виде код будет разобрать сложно, отсюда и ошибки.

Но в целом здорово что ты сам разобрался как портировать.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Foxymist (23.07.2016)
Старый 23.07.2016, 16:06   #5
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Сообщение от ABTOMAT Посмотреть сообщение
Вряд ли кто-то будет ползать с лупой по чужому коду, выискивая, что же не так.
Выводи по очереди в лог (DebugLog на Блице и Debug.Log на Юнити) все значения, которые ты вычисляешь и обнаружишь в каком месте ошибка.

Кстати вместо этого:

	public int[,] g1 = new int[77,77];
	public int[,] g2 = new int[77,77];

	public GameObject[,] cube = new GameObject[77,77];
Можно и нужно применять ООП, потому что в таком виде код будет разобрать сложно, отсюда и ошибки.

Но в целом здорово что ты сам разобрался как портировать.

Если честно я не разобрался, да “портировал” но в c# я не шарю.

Например; я не понимаю, почему в Blitz я могу писать так If (x1)<>0 Or (y1)<>0 а в юнити нет, ну
то есть операторы “<>” я использовать не могу чтоли? Или в юнити например if (c>=2)
почему “c>=2” а не “с=2” мне не надо “>” мне надо “=” но с равно выдаёт ошибку сам юнити.

А так, я нарочно упростил алгоритм, чтобы проще было портировать.

ООП? не понимаю о чём ты хочешь мне сказать, почитал за ООП в вики;

Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования
Если можно, поясни пожалуйста, так как у меня всего два объекта Сфера и Куб.

Пошел второй день обучения.
(Offline)
 
Ответить с цитированием
Старый 23.07.2016, 16:17   #6
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Mistshift Обучение

Сообщение от Foxymist Посмотреть сообщение
почему в Blitz я могу писать так If (x1)<>0 Or (y1)<>0 а в юнити нет
Потому что Блитз древний. Сейчас во всех языках надо так:
If (x1) != 
x1 значение может быть любым, но должно быть не равно 0 что-бы условие сработало.

Сообщение от Foxymist Посмотреть сообщение
Или в юнити например if (c>=2)
почему “c>=2” а не “с=2” мне не надо “>” мне надо “=” но с равно выдаёт ошибку сам юнити.
Для проверки на равенство надо
if (== 2
В современных языках "=" это значить присвоить значение, а "==" сравнить значения.

Выражение ">=" или "<=" в Юнити работает так же как и в Блитзе.

Сообщение от Foxymist Посмотреть сообщение
ООП? не понимаю о чём ты хочешь мне сказать
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Foxymist (23.07.2016)
Старый 23.07.2016, 17:09   #7
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Сообщение от Nex Посмотреть сообщение
Потому что Блитз древний. Сейчас во всех языках надо так:
If (x1) != 
x1 значение может быть любым, но должно быть не равно 0 что-бы условие сработало.


Для проверки на равенство надо
if (== 2
В современных языках "=" это значить присвоить значение, а "==" сравнить значения.

Выражение ">=" или "<=" в Юнити работает так же как и в Блитзе.


Полиморфизм - это то, что мне понадобиться, да и в целом полезный урок спасибо.
Получается все эти массивы (которые я нагороди, не нужны) мне и одного массива будет достаточно.
(Offline)
 
Ответить с цитированием
Старый 24.07.2016, 01:24   #8
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Вот так работает;
using UnityEngine;
using System.Collections;

public class LG : MonoBehaviour {
	
	
	public int x_grid = 77;
	public int y_grid = 77;   
	
	private int[,,] g;
	private GameObject[,] cube;
	
	
	void Start()   
	{
		
		g = new int[x_grid, y_grid, 2];
		cube = new GameObject[x_grid, y_grid];
		
		for (int x = 0; x < x_grid; x=x+1) {
			for (int y = 0; y < y_grid; y=y+1) {
				
				cube[x,y]=GameObject.CreatePrimitive (PrimitiveType.Cube);
				cube[x,y].transform.position = new Vector3 (x * 2, 0, y * 2);
				cube[x,y].renderer.material.color = new Color(x *0.1f,0,y *0.1f);
				cube[x,y].active= false;//Hide
				g[Random.Range(x, y),Random.Range(x, y),1] = 1; 
				
			}
		}
		
		
	}   
	
	void Update()   
	{   
		
		//Lightweight spaceship (LWSS)
		if (Input.GetKeyDown("f")) {
			
			g[20,10,1] = 1; 
			g[20,13,1] = 1;
			g[21,14,1] = 1;
			g[22,14,1] = 1;
			g[23,14,1] = 1;
			g[23,13,1] = 1;
			g[23,12,1] = 1;
			g[23,11,1] = 1;
			g[22,10,1] = 1;
			
		}
		
		for (int x = 0; x < x_grid; x=x+1) 
		{
			for (int y = 0; y < y_grid; y=y+1) 
			{
				
				if ((g[x,y,1] == 1) || (g[x,y,1] == 0 && g[x,y,0] == 1))   
				{   
					g[x,y,0] = 1;  
					
					cube[x,y].active= true;//Show
				}  
				
				if (g[x,y,1] == -1)   
				{   
					g[x,y,0] = 0;  
					cube[x,y].active= false;//Hide
					
				}   
				g[x,y,1] = 0;   
			}
		}
		
		
		for (int x = 0; x < x_grid; x=x+1) 
		{
			for (int y = 0; y < y_grid; y=y+1) 
			{
				int count = gen(x, y);
				if (count == 3 && g[x,y,0] == 0)
				{
					g[x,y,1] = 1;
					
				}
				if ((count < 2 || count > 3) && g[x,y,0] == 1)
				{
					g[x,y,1] = -1;
					
				}
			}
		}
		
	}
	
	
	int gen(int x, int y)   
	{   
		return g[(x + 1) % x_grid, y, 0] + g[x, (y + 1) % y_grid, 0]+ g[(x + x_grid - 1) % x_grid,y,0] + g[x,(y + y_grid - 1) % y_grid,0]+ g[(x + 1) % x_grid,(y + 1) % y_grid,0] + g[(x + x_grid - 1) % x_grid,(y + 1) % y_grid,0] + g[(x + x_grid - 1) % x_grid,(y + y_grid - 1) % y_grid,0] + g[(x + 1) % x_grid,(y + y_grid - 1) % y_grid,0]; 
		
	}
	
	
	
	
}
"F" Создать "Космический корабль"



А как туман вокруг Сферы сделать?
Вложения
Тип файла: rar Mistshift.rar (7.34 Мб, 509 просмотров)

Последний раз редактировалось Foxymist, 24.07.2016 в 18:04. Причина: Неправильная ссылка на вложение.
(Offline)
 
Ответить с цитированием
Старый 24.07.2016, 17:59   #9
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Какие альтернативы у команд PickedEntity EntityPickMode LinePick TFormVector TFormNormal
Вообще что искать, для Unity, чтобы кликнул по сфере и над ней появился куб в том месте где
кликнул. И чтоб повёрнут он был нормалями к сфере.
Я не знаю как это сформулировать для Unity в гугле.

Миниатюры
Нажмите на изображение для увеличения
Название: Untitled - 1.png
Просмотров: 981
Размер:	73.1 Кб
ID:	22441  
(Offline)
 
Ответить с цитированием
Старый 25.07.2016, 06:30   #10
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Mistshift Обучение

http://www.shgames.ru/index.php?titl...авная_страница

PickedEntity - http://www.shgames.ru/index.php?titl...ера:CameraPick

TFormPick и некоторых других нет в Юнити, но это не значит что все плохо. Данные о нормалях как я помню есть в свойствах Raycast. По ссылке выше пример и там у переменной "hit" через точку можно получить доступ ко многим вещам которые тебе помогут.

Последний раз редактировалось Nex, 25.07.2016 в 08:48.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Foxymist (25.07.2016)
Старый 25.07.2016, 13:49   #11
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Не понял, почему в этом случае;
// Если не попали в какой-либо объект - выходим из функции
        
if (!Physics.Raycast(rayout hit))
            return; 
фигурные скобки не используем?
(Offline)
 
Ответить с цитированием
Старый 25.07.2016, 14:11   #12
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Mistshift Обучение

Сообщение от Foxymist Посмотреть сообщение
Не понял, почему в этом случае;
// Если не попали в какой-либо объект - выходим из функции
        
if (!Physics.Raycast(rayout hit))
            return; 
фигурные скобки не используем?
Потому что опять же в большинстве современных c/java - подобных языках можно не использовать скобки если выражение условия или функции в одну строку.
Если бы было так, то скобки нужны были бы. Иначе либо ошибка, либо "return" будет срабатывать уже не в условии, а в функции из которой это условие вызывается.
// Если не попали в какой-либо объект - выходим из функции
if (!Physics.Raycast(rayout hit))
     
int a 1;
     return; 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Foxymist (25.07.2016)
Старый 25.07.2016, 14:56   #13
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Mistshift Обучение

Чувввак, ты сначала сделай так:
http://mycsharp.ru/

А потом уже пиши. Хотя бы основы ведь нужно знать, а то вопросы тупо из-за не знания синтаксиса.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо RegIon за это полезное сообщение:
Foxymist (25.07.2016), St_AnGer (25.07.2016)
Старый 25.07.2016, 16:48   #14
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Сообщение от RegIon Посмотреть сообщение
Чувввак, ты сначала сделай так:
http://mycsharp.ru/

А потом уже пиши. Хотя бы основы ведь нужно знать, а то вопросы тупо из-за не знания синтаксиса.
А ты вовремя а то я сижу и не пойму, почему одна переменная, показывает в Debug.Log(p0); три значения “XYZ” а оказывается это массив p0[0], p0[1],p0[2]
Ну, я как то так учусь. Спасибо за ссылку полезный ресурс.
(Offline)
 
Ответить с цитированием
Старый 26.07.2016, 13:47   #15
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Теперь куб двигается над сферой по нажатие левой кнопки мыши, так как надо.
Для того чтобы куб смотрел в центр сферы использовал этот урок

using UnityEngine;
using System.Collections;

public class 
FauxGravityAttractor MonoBehaviour {

    public 
float gravity = -12;

    public 
void Attract(Transform body) {
        
Vector3 gravityUp = (body.position transform.position).normalized;
        
Vector3 localUp body.up;

        
body.rigidbody.AddForce(gravityUp gravity);

        
Quaternion targetRotation Quaternion.FromToRotation(localUp,gravityUp) * body.rotation;
        
body.rotation Quaternion.Slerp(body.rotation,targetRotation,50f Time.deltaTime );
    }   


using UnityEngine;
using System.Collections;

[
RequireComponent (typeof (Rigidbody))]
public class 
FauxGravityBody MonoBehaviour {

    public 
FauxGravityAttractor attractor;
    private 
Transform myTransform;

    
void Start () {
        
rigidbody.useGravity false;
        
rigidbody.constraints RigidbodyConstraints.FreezeRotation;

        
myTransform transform;
    }

    
void FixedUpdate () {
        if (
attractor){
            
attractor.Attract(myTransform);
        }
    }
    

Теперь в планах сделать, чтобы при клике вращалась сама сфера.
Вложения
Тип файла: rar Mistshift.rar (7.66 Мб, 511 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com