hit.collider.transform.parent.GetComponent<DoorScript>().count_v();
hit.collider.transform.root.GetComponent<DoorScript>().count_v();
hit.transform.root.GetComponent<DoorScript>().count_v();
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class user : MonoBehaviour {
public float Distens = 0f;
void Update() {
if (Input.GetKeyDown(KeyCode.E)) {
Ray ray = new Ray (transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Distens))
if (hit.transform.root.TryGetComponent(out DoorScript door))
door.count_v();
}
}
}
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
createApple();
GameObject apple = GameObject.Find("apple");
oneApple = true;
}
}
if (oneApple) {
apple.transform.position -= new Vector3(0, 0, 5 * Time.deltaTime);
if (apple.transform.position.z < -15) {
Destroy(apple);
oneApple =false;
}
}
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
createApple();
apple = GameObject.Find("apple");
oneApple = true;
}
}
// Данный код
GameObject createApple() {
GameObject result = new GameObject("apple");
GameObject apple = null;
apple = apllePrefab;
Vector3 applePos = transform.position + new Vector3 (1, 0.5f,1);
if (apple != null) {
GameObject go = Instantiate(apllePrefab, applePos,Quaternion.identity);
}
return result;
}
// Можно заменить на такой без потери смысла
GameObject сreateApple() {
var applePos = transform.position + new Vector3(1, 0.5f, 1);
return Instantiate(apllePrefab, applePos, Quaternion.identity);
}
// Далее в этом фрагменте вы сначала помещаете объект на сцену, а затем пытаетесь его найти
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
createApple();
apple = GameObject.Find("apple");
oneApple = true;
}
}
// Не то чтобы метод GameObject.Find вообще не стоило
// никогда использовать, но обычно есть более практичные
// способы это сделать. Например передать прямую ссылку:
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
apple = сreateApple();
oneApple = true;
}
}
var enemies = GameObject.FindGameObjectsWithTag("Enemy");
if (enemies.Length > 0) {
// действие
}
var enemies = FindObjectsOfType<Enemy>();
if (enemies.Length > 0) {
// действие
}
public List<Enemy> enemies = new List<Enemy>();
// ...
var enemy = Instantiate(...);
enemies.Add(enemy);
// чтобы скрипт врага мог общаться с контроллером, передадим туда ссылку
enemy.spawner = this;
// и метод логики удаления
public void Remove(Enemy e) {
enemies.Remove(e);
if (enemies.Count > 0) {
// действие
}
}
public Spawner spawner;
// ...
if (health <= 0) {
spawner.Remove(this); // удаляем этого врага из списка спаунера
Destroy(gameObject); // уничтожаем его объект
}
public GameObject text; // ссылка на внутреннее текстовое поле
// ...
public void OnClick() { // привязать к кнопке
text.SetActive(!text.activeSelf); // переключает видимость
}
private void OnCollisionEnter(Collision c) {
if (c.gameObject.layer == 6) { // порядковый номер искомого слоя
// do anything
}
}
public void Jump() {
rb2d.AddForce(Vector2.up * jumpPower);
}
public int jumpsLimit;
public int jumpsDone;
public void Jump() {
if (jumpsDone < jumpsLimit) {
rb2d.AddForce(Vector2.up * jumpPower);
jumpsDone++;
}
}
// очередь команд
private readonly ConcurrentQueue<Action> _Actions = new ConcurrentQueue<Action>();
// получаете сообщение - ставите в очередь
private void OnMessage(object sender, MessageEventArgs e) {
_Actions.Enqueue(() => ReadResponse(e.Data));
}
// каждое обновление экрана запускаем всю очередь
private void Update() {
while (_Actions.Count > 0)
if (_Actions.TryDequeue(out var action))
action?.Invoke();
}
// вот тут вы уже можете влиять на тот же текст
private void ReadResponse(string data) {
// ваш код
}
num = Random.Range(0, 4);
num = (int) num;
yield return new WaitForSeconds(0.001f);
num = 0;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class PlayerMove3D : MonoBehaviour {
CharacterController controller;
Vector3 input, velocity;
public float moveSpeed = 10f;
public float jumpPower = 10f;
public float gravity = 20f;
public Transform groundCheckPoint;
public float groundCheckRadius;
public LayerMask groundLayer;
private void Start() => controller = GetComponent<CharacterController>();
private void Update() {
input.x = Input.GetAxis("Horizontal");
input.z = Input.GetAxis("Vertical");
input = input.normalized;
bool grounded = Physics.CheckSphere(groundCheckPoint.position, groundCheckRadius, groundLayer);
if (grounded && velocity.y < 0)
velocity.y = -2f;
if (Input.GetKeyDown(KeyCode.Space) && grounded) {
Jump(Mathf.Sqrt(2f * gravity * jumpPower));
}
}
private void FixedUpdate() {
Vector3 moveVector = transform.right * input.x + transform.forward * input.z;
controller.Move(moveVector * moveSpeed * Time.fixedDeltaTime);
velocity.y -= gravity * Time.fixedDeltaTime;
controller.Move(velocity * Time.fixedDeltaTime);
}
private void OnControllerColliderHit(ControllerColliderHit hit) {
// TODO collisions
}
}
using UnityEngine;
public class CameraFollow2D : MonoBehaviour {
public Transform target;
public float minX, maxX;
public float minY, maxY;
private void LateUpdate() {
Vector3 nextPosition = transform.position;
nextPosition.x = Mathf.Clamp(target.position.x, minX, maxX);
nextPosition.y = Mathf.Clamp(target.position.y, minY, maxY);
transform.position = nextPosition;
}
}