示例#1
0
        internal void AddNode(int count, Vector3 initPos)
        {
            if (IsDead)
            {
                return;
            }

            for (int i = 0; i < count; i++)
            {
                _ownerPlayer.snakerData.length++;

                SnakerNode node = new SnakerNode();
                node.InitData(_data["Body"].IntValue, _ownerPlayer.snakerData.length, this, initPos);

                // add the new node to the previous pos of _tail.
                _tail.PrevNode.SetNextNode(node);
                node.SetNextNode(_tail);
                _tail.SetPrevNode(node);
            }
        }
示例#2
0
        public Snaker(PlayerData player, Vector3 initPos, float initSpeed = 0f)
        {
            _ownerPlayer = player;

            // load table
            _data = CSVTableLoader.GetTableContainer("Snaker").GetRow(player.snakerData.id.ToString());

            _head = new SnakerHead();
            _head.InitData(_data["Head"].IntValue, 0, this, initPos);
            _tail = new SnakerTail();
            _tail.InitData(_data["Tail"].IntValue, 0, this, initPos);

            _head.SetNextNode(_tail);
            _tail.SetPrevNode(_head);

            _components = new List <SnakerComponent>();

            if (_ownerPlayer.aiID > 0)
            {
                SnakerAI ai = new SnakerAI(this, _ownerPlayer.aiID);
                _components.Add(ai);
            }

            _isDead = false;

            // input
            _moveSpeed      = initSpeed;
            _inputDirection = new Vector3();
            _moveDirection  = new Vector3(0f, 1f, 0f);

            enegy      = 0;
            pre_length = -1;
            pre_count  = 0;
            hitNode    = null;

            // init snaker nodes
            AddNode(InitLength, initPos);
        }