Скрипти, заповнити прогалину

Доброго часу доби всім і спасибі що завітали!

І якщо вже заглянули, мб відповісте на мої дилетантські питання (и)?)

І ще один момент не ясний, як скажімо мені зробити так що б один об'єкт міняв своє стояння в залежності від стояння іншого, припустимо одну кульку міняв свій колір так само як і перший.
Як в скрипті можна дістатися до першого з скрипта другого і задати ті ж параметри для другого?

Сподіваюся, я не багато всього за раз запитав)

1. Немає жодних глобальних скриптів, якщо ви хочете наприклад створити систему підрахунку очок або меню, скрипт цей повинен висіти на якому з об'єктів на сцені.
2. Щоб дізнатися стан іншого об'єкта потрібно його знайти. А далі дивитися його властивості.

Ускладнювати - просто, спрощувати - складно.

OlegNick писал (а): 1. Немає жодних глобальних скриптів, якщо ви хочете наприклад створити систему підрахунку очок або меню, скрипт цей повинен висіти на якому з об'єктів на сцені.
2. Щоб дізнатися стан іншого об'єкта потрібно його знайти. А далі дивитися його властивості.

1. Невірно. Не потрібно нікуди нічого вішати. Просто той же моторний скрипт візьміть у спадщину немає від Monobehaviour, а від базового, який в свою чергу спокійно собі може лежати в папці.

Перша сфера реагує на натискання кнопок.

Прихований текст: показати

using UnityEngine;
using System.Collections;

public class Sphere1ChangerColor. MonoBehaviour


public Vector4 color = new Vector4 # 40; 0, 0, 0, 1 # 41 ;;
private GameObject Sp1;

// Use this for initialization
void Start # 40; # 41; Sp1 = GameObject.Find # 40; "Sphere1" # 41 ;;

// Update is called once per frame
void Update # 40; # 41; Vector4 newColor = color;

if # 40; Input.GetKey # 40; KeyCode.Q # 41; # 41;
newColor + = new Vector4 # 40; 0.1f, 0, 0. 0 # 41 ;;


if # 40; Input.GetKey # 40; KeyCode.A # 41; # 41;
newColor - = new Vector4 # 40; 0.1f, 0, 0. 0 # 41 ;;

if # 40; Input.GetKey # 40; KeyCode.W # 41; # 41;
newColor + = new Vector4 # 40; 0, 0.1f, 0. 0 # 41 ;;


if # 40; Input.GetKey # 40; KeyCode.S # 41; # 41;
newColor - = new Vector4 # 40; 0, 0.1f, 0. 0 # 41 ;;

if # 40; Input.GetKey # 40; KeyCode.E # 41; # 41;
newColor + = new Vector4 # 40; 0, 0, 0.1f. 0 # 41 ;;


if # 40; Input.GetKey # 40; KeyCode.D # 41; # 41;
newColor - = new Vector4 # 40; 0, 0, 0.1f. 0 # 41 ;;


//newColor.Normalize#40;#41 ;;
color = newColor;


А друга сфера просто копіює колір першого.

Прихований текст: показати

using UnityEngine;
using System.Collections;

public class Sphere2ColorChanger. MonoBehaviour

private GameObject Sp1;
private GameObject Sp2;
// Use this for initialization
void Start # 40; # 41; Sp1 = GameObject.Find # 40; "Sphere1" # 41 ;;
Sp2 = GameObject.Find # 40; "Sphere2" # 41 ;;

// Update is called once per frame
void Update # 40; # 41;

Vector4 Sp1Color = Sp1.renderer.material.color;
Sp2.renderer.material.color = Sp1Color;

Тепер ще спробую зробити глобальний скрипт на основі базового класу.

Написав просто ні до чого не прикріплений скрипт global який кілька Скейл сфери,

Прихований текст: показати

using UnityEngine;
using System.Collections;

public class Global. MonoBehaviour

public GameObject Sp1;
public GameObject Sp2;


// Use this for initialization
void Start # 40; # 41; Sp1 = GameObject.Find # 40; "Sphere1" # 41 ;;
Sp2 = GameObject.Find # 40; "Sphere2" # 41 ;;

Sp1.transform.localScale = new Vector3 # 40; 1, 2, 1 # 41 ;;
Sp2.transform.localScale = new Vector3 # 40; 1, 3, 1 # 41 ;;

// Update is called once per frame
void Update # 40; # 41;

Але він просто так не спрацював поки я його до пустушки не прив'язаний, от, в загальному зрозуміло що скрип тут сам по собі взагалі існувати не може.

Спасибі, я теж це помітив. Прибрав теги. мб якось по іншому потрібно форматувати код? А то простим текстом не зручно розуміти логіку коду, без форматування оригінального (

Я зараз щось на зразок понгу роблю, навіть простіше, простий кубик бігає відскакує від стін. Чотири стіни кубик всередині, підлогу.
І питання в зв'язку з цим, які методи використовуються для визначення колізії?
Я поки такої скрипт накидав, але щось нічого не відбувається, вірніше він проходить крізь праву стінку.

Прихований текст: показати

using UnityEngine;
using System.Collections;

public class Pong. MonoBehaviour

public Vector3 position = new Vector3 # 40; 0,1,0 # 41 ;;
public Vector3 velocity = new Vector3 # 40; 100,0,100 # 41 ;;
public GameObject pongObj;

private GameObject [] Walls = new GameObject [4];


// Use this for initialization
void Start # 40; # 41; pongObj = GameObject.Find # 40; "Pong" # 41 ;;
Walls [0] = GameObject.Find # 40; "Cube1" # 41 ;;
Walls [1] = GameObject.Find # 40; "Cube2" # 41 ;;
Walls [2] = GameObject.Find # 40; "Cube3" # 41 ;;
Walls [3] = GameObject.Find # 40; "Cube4" # 41 ;;
>

void OnCollisionEnter # 40; Collision other # 41;
// Vector3 otherCenter = other.transform.localPosition;
// Vector3 pongCenter = pongObj.transform.localPosition;

GameObject obj = other.gameObject;

if # 40; obj.tag == "WallsTag" # 41;
velocity = -velocity;
Debug.Log # 40; "has collide with walls!" # 41 ;;
return;
>

Debug.Log # 40; "has collide with something other then walls!" # 41 ;;
>

// Update is called once per frame
void Update # 40; # 41; position + = velocity * Time.deltaTime;
pongObj.transform.localPosition = position;
>
>