C # Unity - Установить скорость пружины шарнирного соединения при столкновении игрока (начинающий кодер) - PullRequest
0 голосов
/ 10 октября 2018

Я должен начать с того, что я начинающий, когда дело доходит до кодирования и единства, но я очень стараюсь хорошо учиться в этом классе, так что ... не стесняйтесь давать мне некоторые советы.

У меня были проблемы с этим механиком, над которым я работаю.По сути, я хочу, чтобы мост падал, когда на него наталкивался игрок.Я пытаюсь сделать это, используя шарнирное соединение с коробчатым коллайдером, и когда игрок врезается в мост, скорость пружины устанавливается на 10, и мост падает на место.Тем не менее, я продолжаю сталкиваться с проблемами с кодом:

                    using System.Collections;
                    using System.Collections.Generic;
                    using UnityEngine;

                    public class Jointsiguess : MonoBehaviour
                {      
                void Awake()
                {
                   HingeJoint hinge = GetComponent<HingeJoint>();
                  PlayerManager playerManager;
                  JointSpring hingeSpring = hinge.spring;
                   playerManager = FindObjectOfType<PlayerManager>();
                }

                void OnTriggerEnter(Collider other)
                {
                   if (other.CompareTag("Player"))
                    {
                        hingeSpring.spring = 10;
                        hingeSpring.damper = 0;
                        hingeSpring.targetPosition = 180;
                        hinge.spring = hingeSpring;
                       hinge.useSpring = true;
                    }
                }
            }

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

1 Ответ

0 голосов
/ 11 октября 2018

Сообщение об ошибке:

hingeSpring 'не существует в текущем контексте. Ресурсы / сценарии / Jointsiguess.cs (23,13): ошибка CS0103: имя шарнира' не существует втекущий контекст

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

                public class Jointsiguess : MonoBehaviour
                {      
HingeJoint hinge;
PlayerManager playerManager;
JointSpring hingeSpring;
                void Awake()
                {
                   hinge = GetComponent<HingeJoint>();
                  hingeSpring = hinge.spring;
                   playerManager = FindObjectOfType<PlayerManager>();
                }
}

Убедитесь, что при определении переменных, которые вы делаете глобально, C # имеет область действия со своими переменными.Подробнее об этом здесь: http://www.blackwasp.co.uk/CSharpVariableScopes.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...