void LateUpdate() { _moveDirection.Set(movementSpeed * Input.GetAxis("Horizontal"), _yDirection, movementSpeed * Input.GetAxis("Vertical")); _yDirection += gravity * Time.deltaTime; if (_myCharacterController.isGrounded) { if (_moveDirection.y < 0) { _yDirection = -5; } if (_doubleJumpActivated) { _doubleJumpActivated = false; } if (Input.GetButtonDown("Jump")) { _yDirection = jumpForce; } } else if (Input.GetButtonDown("Jump") && !_doubleJumpActivated) { _yDirection = jumpForce; _doubleJumpActivated = true; } if (Input.GetButtonDown("Fire1")) { if (activeWeaponObj.GetString() == "Sword") { activateWeapon.Invoke(); } else if (activeWeaponObj.GetString() == "Gun") { foreach (Rigidbody bullet in bulletPool) { if (!bullet.gameObject.activeSelf) { bullet.Sleep(); bullet.transform.position = gunFirePoint.position; bullet.transform.rotation = gunFirePoint.rotation; bullet.gameObject.SetActive(true); bullet.WakeUp(); bullet.velocity += transform.forward * bulletForce; break; } } } } _moveDirection = transform.TransformDirection(_moveDirection); _myCharacterController.Move(_moveDirection * Time.deltaTime); transform.Rotate(transform.up * (Input.GetAxis("Mouse X") * mouseTurnSensitivity)); playerPositionObj.value = transform.position; }
/// <summary> /// 加载文件系统。 /// </summary> /// <param name="fullPath">要加载的文件系统的完整路径。</param> /// <param name="access">要加载的文件系统的访问方式。</param> /// <param name="stream">要加载的文件系统的文件系统流。</param> /// <returns>加载的文件系统。</returns> public static FileSystem Load(string fullPath, FileSystemAccess access, FileSystemStream stream) { FileSystem fileSystem = new FileSystem(fullPath, access, stream); stream.Read(s_CachedBytes, 0, HeaderDataSize); fileSystem.m_HeaderData = Utility.Marshal.BytesToStructure <HeaderData>(HeaderDataSize, s_CachedBytes); CalcOffsets(fileSystem); fileSystem.m_BlockDatas.Capacity = fileSystem.m_HeaderData.BlockCount; for (int i = 0; i < fileSystem.m_HeaderData.BlockCount; i++) { stream.Read(s_CachedBytes, 0, BlockDataSize); BlockData blockData = Utility.Marshal.BytesToStructure <BlockData>(BlockDataSize, s_CachedBytes); fileSystem.m_BlockDatas.Add(blockData); } for (int i = 0; i < fileSystem.m_BlockDatas.Count; i++) { BlockData blockData = fileSystem.m_BlockDatas[i]; if (blockData.Using) { StringData stringData = fileSystem.ReadStringData(blockData.StringIndex); fileSystem.m_StringDatas.Add(blockData.StringIndex, stringData); fileSystem.m_FileDatas.Add(stringData.GetString(fileSystem.m_HeaderData.GetEncryptBytes()), i); } else { fileSystem.m_FreeBlockIndexes.Add(blockData.Length, i); } } return(fileSystem); }
/// <summary> /// 加载文件系统。 /// </summary> /// <param name="fullPath">要加载的文件系统的完整路径。</param> /// <param name="access">要加载的文件系统的访问方式。</param> /// <param name="stream">要加载的文件系统的文件系统流。</param> /// <returns>加载的文件系统。</returns> public static FileSystem Load(string fullPath, FileSystemAccess access, FileSystemStream stream) { FileSystem fileSystem = new FileSystem(fullPath, access, stream); stream.Read(s_CachedBytes, 0, HeaderDataSize); fileSystem.m_HeaderData = Utility.Marshal.BytesToStructure <HeaderData>(HeaderDataSize, s_CachedBytes); if (!fileSystem.m_HeaderData.IsValid) { return(null); } CalcOffsets(fileSystem); if (fileSystem.m_BlockDatas.Capacity < fileSystem.m_HeaderData.BlockCount) { fileSystem.m_BlockDatas.Capacity = fileSystem.m_HeaderData.BlockCount; } for (int i = 0; i < fileSystem.m_HeaderData.BlockCount; i++) { stream.Read(s_CachedBytes, 0, BlockDataSize); BlockData blockData = Utility.Marshal.BytesToStructure <BlockData>(BlockDataSize, s_CachedBytes); fileSystem.m_BlockDatas.Add(blockData); } for (int i = 0; i < fileSystem.m_BlockDatas.Count; i++) { BlockData blockData = fileSystem.m_BlockDatas[i]; if (blockData.Using) { StringData stringData = fileSystem.ReadStringData(blockData.StringIndex); fileSystem.m_StringDatas.Add(blockData.StringIndex, stringData); fileSystem.m_FileDatas.Add(stringData.GetString(fileSystem.m_HeaderData.GetEncryptBytes()), i); } else { fileSystem.m_FreeBlockIndexes.Add(blockData.Length, i); } } int index = 0; foreach (KeyValuePair <int, StringData> i in fileSystem.m_StringDatas) { while (index < i.Key) { fileSystem.m_FreeStringIndexes.Enqueue(index++); } index++; } return(fileSystem); }
/// <summary> /// 加载文件系统。 /// </summary> /// <param name="fullPath">要加载的文件系统的完整路径。</param> /// <param name="access">要加载的文件系统的访问方式。</param> /// <param name="stream">要加载的文件系统的文件系统流。</param> /// <returns>加载的文件系统。</returns> public static FileSystem Load(string fullPath, FileSystemAccess access, FileSystemStream stream) { FileSystem fileSystem = new FileSystem(fullPath, access, stream); stream.Read(s_CachedBytes, 0, HeaderDataSize); fileSystem.m_HeaderData = Utility.Marshal.BytesToStructure <HeaderData>(HeaderDataSize, s_CachedBytes); if (!fileSystem.m_HeaderData.IsValid) { throw new GameFrameworkException(Utility.Text.Format("File system '{0}' is invalid.", fullPath)); } CalcOffsets(fileSystem); if (fileSystem.m_BlockDatas.Capacity < fileSystem.m_HeaderData.BlockCount) { fileSystem.m_BlockDatas.Capacity = fileSystem.m_HeaderData.BlockCount; } for (int i = 0; i < fileSystem.m_HeaderData.BlockCount; i++) { stream.Read(s_CachedBytes, 0, BlockDataSize); BlockData blockData = Utility.Marshal.BytesToStructure <BlockData>(BlockDataSize, s_CachedBytes); fileSystem.m_BlockDatas.Add(blockData); } for (int i = 0; i < fileSystem.m_BlockDatas.Count; i++) { BlockData blockData = fileSystem.m_BlockDatas[i]; if (blockData.Using) { StringData stringData = fileSystem.ReadStringData(blockData.StringIndex); fileSystem.m_StringDatas.Add(blockData.StringIndex, stringData); fileSystem.m_FileDatas.Add(stringData.GetString(fileSystem.m_HeaderData.GetEncryptBytes()), i); } else { fileSystem.m_FreeBlockIndexes.Add(blockData.Length, i); } } return(fileSystem); }