Доброго часу доби всім і спасибі що завітали!
І якщо вже заглянули, мб відповісте на мої дилетантські питання (и)?)
І ще один момент не ясний, як скажімо мені зробити так що б один об'єкт міняв своє стояння в залежності від стояння іншого, припустимо одну кульку міняв свій колір так само як і перший.
Як в скрипті можна дістатися до першого з скрипта другого і задати ті ж параметри для другого?
Сподіваюся, я не багато всього за раз запитав)
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;
>
>