private bool GroundTest(PlayerEntity playerEntity, out float dist) { bool ret = false; dist = 0f; var controller = playerEntity.characterContoller.Value; var radius = controller.radius; var gameObject = playerEntity.RootGo(); var prevLayer = gameObject.layer; IntersectionDetectTool.SetColliderLayer(gameObject, UnityLayerManager.GetLayerIndex(EUnityLayerName.User)); var playerPos = playerEntity.position.Value; var startPoint = new Vector3(playerPos.x, SingletonManager.Get <MapConfigManager>().WaterSurfaceHeight(playerPos), playerPos.z); // a shift lift up RaycastHit outHit; //DebugDraw.DebugWireSphere(startPoint + new Vector3(0,-(AnimatorParametersHash.FirstPersonStandCameraHeight - radius + DisOffset),0) , radius, 0 , false); if (Physics.SphereCast(startPoint, radius, Vector3.down, out outHit, AnimatorParametersHash.FirstPersonStandCameraHeight - radius + DisOffset, UnityLayers.AllCollidableLayerMask)) { ret = true; dist = outHit.distance + radius; } IntersectionDetectTool.SetColliderLayer(gameObject, prevLayer); //_logger.InfoFormat("GroundTest : {0}", ret); return(ret); }
/// <summary> /// 确定指定x,z位置的落地点(y方向值) /// </summary> private Vector3 FindTheGroundPos(Vector3 pos) { Vector3 fromV = new Vector3(pos.x, 1000, pos.z); Vector3 toV = new Vector3(pos.x, -1000, pos.z); Ray r = new Ray(fromV, new Vector3(toV.x - fromV.x, toV.y - fromV.y, toV.z - fromV.z)); RaycastHit hitInfo; bool hitted = Physics.Raycast(r, out hitInfo, Mathf.Infinity, UnityLayers.SceneCollidableLayerMask | (1 << UnityLayerManager.GetLayerIndex(EUnityLayerName.WaterTrigger))); float yVal = 0; if (hitted == false) { yVal = pos.y; } else { yVal = hitInfo.point.y; } Vector3 groundPos = new Vector3(pos.x, hitInfo.point.y, pos.z); return(groundPos); }
public void PlayerDead(bool isSelf = true) { SetLayer(_thirdModel, UnityLayerManager.GetLayerIndex(EUnityLayerName.NoCollisionWithEntity)); CloseEye(); _controller.enabled = false; Logger.InfoFormat("CharacterLog-- PlayerDead :{0}", _characterRoot); }
private bool DetectObstacle(GameObject go, bool isPositiveDirect) { bool hasObstacle = false; for (int i = 0; i < go.transform.childCount; i++) { var child = go.transform.GetChild(i); if (child.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast)) { var forwardOfDoor = isPositiveDirect ? go.transform.forward : -go.transform.forward; var width = Math.Max(child.localScale.x, child.localScale.z); var thick = Math.Min(child.localScale.x, child.localScale.z); var extents = new Vector3(width - 2 * thick, child.localScale.y - thick, width - 2 * thick) / 2; var center = child.position; center += forwardOfDoor.normalized * (width) / 2; if (Physics.CheckBox(center, extents, child.rotation, UnityLayers.DoorCastLayerMask)) { hasObstacle = true; } } } return(hasObstacle); }
private static bool IsTerrian(RaycastHit hitInfo) { var terrain = hitInfo.collider.gameObject.GetComponent <Terrain>(); var isTerrainLayer = hitInfo.collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Terrain); return(terrain != null || isTerrainLayer); }
public override UnitPosition Select(IEventArgs args) { UnitPosition up = pos.Select(args); Vector3 position = UnityPositionUtil.ToVector3(up); RaycastHit hitInfo; if (SingletonManager.Get <MapConfigManager>().InWater(position)) { Ray ray = new Ray(position, Vector3.up); bool hit = Physics.Raycast(ray, out hitInfo, 10000, UnityLayerManager.GetLayerMask(EUnityLayerName.WaterTrigger)); if (hit) { return(UnityPositionUtil.FromVector(hitInfo.point - new Vector3(0, waterDelta, 0))); } } else { Ray ray = new Ray(position, Vector3.down); bool hit = Physics.Raycast(ray, out hitInfo, 10000, UnityLayers.SceneCollidableLayerMask | UnityLayerManager.GetLayerMask(EUnityLayerName.WaterTrigger)); if (hit) { if (hitInfo.collider.transform.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.WaterTrigger)) { return(UnityPositionUtil.FromVector(hitInfo.point - new Vector3(0, waterDelta, 0))); } else { return(UnityPositionUtil.FromVector(hitInfo.point)); } } } return(up); }
public void PlayerReborn() { SetLayer(_characterRoot, UnityLayerManager.GetLayerIndex(EUnityLayerName.Player)); openEye(); _controller.enabled = true; Logger.InfoFormat("PlayerReborn: {0}", _characterRoot); }
public static GameObject InitHitBoxComponent(EntityKey entityKey, IHitBox playerEntity, GameObject hitboxGo) { hitboxGo.name = "hitbox_" + entityKey; GameObject bsGo = HitBoxConstants.FindBoundingSphereModel(hitboxGo); SphereCollider sc = bsGo.GetComponent <SphereCollider>(); sc.enabled = false; hitboxGo.transform.Recursively(t => { var go = t.gameObject; HitBoxOwnerComponent pc = go.GetComponent <HitBoxOwnerComponent>(); if (pc == null) { pc = go.AddComponent <HitBoxOwnerComponent>(); } pc.OwnerEntityKey = entityKey; pc.gameObject.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Hitbox); }); playerEntity.AddHitBox(-1, new BoundingSphere(sc.center, sc.radius), hitboxGo, false); hitboxGo.SetActive(false); return(hitboxGo); }
protected override void InternalExecute() { var player = _contexts.player.flagSelfEntity; var controller = player.WeaponController(); if (!player.gamePlay.IsLifeState(EPlayerLifeState.Alive) || !player.gamePlay.CanAutoPick()) { return; } Collider[] colliders = Physics.OverlapCapsule(player.position.Value, player.bones.Head.position, 0.4f, UnityLayerManager.GetLayerMask(EUnityLayerName.UserInputRaycast)); foreach (Collider collider in colliders) { var rcTar = collider.transform.GetComponentInParent <RayCastTarget>(); if (rcTar == null) { continue; } if (SingletonManager.Get <GameModeConfigManager>().GetBagTypeById(_contexts.session.commonSession.RoomInfo.ModeId) == EBagType.Chicken) { var target = _contexts.sceneObject.GetEntityWithEntityKey(new EntityKey(rcTar.IdList[1], (short)EEntityType.SceneObject)); if (target.simpleItem.Category == (int)ECategory.Weapon && player.WeaponController().FilterAutoPickup(target.simpleItem.Id)) { var model = target.hasUnityObject ? target.unityObject.UnityObject : target.multiUnityObject.FirstAsset; if (CommonObjectCastUtil.HasObstacleBetweenPlayerAndItem(player, target.position.Value, model)) { continue; } SimpleProto pickUp = FreePool.Allocate(); pickUp.Key = FreeMessageConstant.PickUpItem; pickUp.Ins.Add(rcTar.IdList[1]); pickUp.Ins.Add(target.simpleItem.Category); pickUp.Ins.Add(target.simpleItem.Id); pickUp.Ins.Add(1); player.network.NetworkChannel.SendReliable((int)EClient2ServerMessage.FreeEvent, pickUp); } } else { _userCmdGenerator.SetUserCmd((userCmd) => { if (!userCmd.AutoPickUpEquip.Contains(rcTar.IdList[1])) { userCmd.AutoPickUpEquip.Add(rcTar.IdList[1]); } }); } } if (controller.AutoThrowing.HasValue && controller.AutoThrowing.Value) { if (null != _userCmdGenerator && controller.RelatedThrowAction.IsReady == true) { _userCmdGenerator.SetUserCmd((userCmd) => { userCmd.IsThrowing = true; }); controller.AutoThrowing = false; } } }
public bool LineOfSight(Vector3 position, PlayerEntity target, bool checkposition) { if ((position - target.position.Value).magnitude < 0.5) { return(true); } var bonePosition = target.bones.Head; var offset = Vector3.zero; offset = target.RootGo().transform.InverseTransformPoint(target.cameraObj.FPCamera .transform.position); if (checkposition) { if (!NavMesh.SamplePosition(position, out m_NavMeshHit, 2f, NavMesh.AllAreas)) { return(false); } } else { Physics.Linecast(position + offset, bonePosition.position, out hit, UnityLayerManager.GetLayerMask(EUnityLayerName.Player)); } return(true); }
public void OnLoadSuccess <T>(T source, UnityObject unityObj) { if (null == unityObj || null == unityObj.AsGameObject) { _assetInfo = AssetInfo.EmptyInstance; return; } if (!unityObj.AsGameObject.activeSelf) { Logger.ErrorFormat("unityObj: {0} is unActive", unityObj.Address); _assetInfo = AssetInfo.EmptyInstance; return; } Logger.InfoFormat("Load Weapon: {0}", unityObj.Address); SetObjParam(unityObj, UnityLayerManager.GetLayerIndex(EUnityLayerName.Player)); if (!unityObj.Address.Equals(_assetInfo)) { AddRecycleObject(unityObj); _assetInfo = AssetInfo.EmptyInstance; return; } _action(unityObj, _assetId); EffectUtility.ReflushGodModeEffect(_rootGo, unityObj.AsGameObject); _assetInfo = AssetInfo.EmptyInstance; }
private static bool IsVehicleTrigger(RaycastHit hitInfo) { var isTrigger = hitInfo.collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.VehicleTrigger); var isHitBox = hitInfo.collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Hitbox); return(isTrigger); }
private void SetCache(Transform trans) { for (int i = 0; i < trans.childCount; i++) { var child = trans.GetChild(i); SetCache(child); var rigidbody = child.GetComponent <Rigidbody>(); if (rigidbody != null) { _rigidbodyCache.Add(child.name, rigidbody); } if (child.gameObject.layer != UnityLayerManager.GetLayerIndex(EUnityLayerName.Hitbox)) { continue; } var collider = child.GetComponent <Collider>(); if (collider == null) { continue; } _transformCache.Add(child.name, child); _hitBoxCache.Add(child.name, collider); } }
private void IgnorePlayerVehicleCollision(bool ignore) { var layer = ignore ? UnityLayerManager.GetLayerIndex(EUnityLayerName.PlayerIgnoreVehicle) : UnityLayerManager.GetLayerIndex(EUnityLayerName.Player); var players = _players.GetEntities(); int playerCount = players.Length; for (int i = 0; i < playerCount; ++i) { try { var player = players[i]; var gamePlayer = player.gamePlay; var root = player.RootGo(); if (root == null) { _logger.ErrorFormat("GameObject for Player Entity {0} Deleted Destroy Flag {1}", player.hasEntityKey ? player.entityKey.ToString() : "NoEntityKey", player.isFlagDestroy); continue; } if (gamePlayer.IsDead() || !root.activeSelf) { continue; } root.layer = layer; } catch (Exception e) { _logger.ErrorFormat("{0}", e); } } }
private bool HasObstacle(Vector3 colPosition, Vector3 bombPosition, Func <Transform, bool> exclude = null) { RaycastHit hitInfo; if (null == exclude) { Debug.DrawLine(bombPosition, colPosition, Color.red, 10f); if (Physics.Linecast(bombPosition, colPosition, out hitInfo, UnityLayerManager.GetLayerMask(EUnityLayerName.Default))) { return(true); } return(false); } var dir = colPosition - bombPosition; var obstacles = Physics.RaycastAll(bombPosition, dir, dir.magnitude, UnityLayerManager.GetLayerMask(EUnityLayerName.Default)); foreach (var obstacle in obstacles) { if (!exclude(obstacle.transform)) { return(true); } } return(false); }
public void FlushLayerOfHitBox() { foreach (var item in _handler.GetTransforms()) { item.Value.gameObject.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Hitbox); } }
private void CollisionHandler(IThrowingSegment segment, RaycastHit hit) { // Debug.LogFormat("Throwing collision dir:{0}, pos:{1}, normal:{2}", segment.RaySegment.Ray.direction, segment.RaySegment.Ray.origin, hit.normal); //glass broken var reflectiveFace = true; if (hit.collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Glass)) { var glassChunk = hit.collider.GetComponent <FracturedGlassyChunk>(); if (glassChunk != null) { glassChunk.MakeBroken(); } reflectiveFace = false; } if (DebugConfig.DrawThrowingLine) { RuntimeDebugDraw.Draw.DrawLine(segment.RaySegment.Ray.origin, (segment.RaySegment.Ray.origin + hit.normal * 5), Color.red, 60f); } ThrowingEntity throwing = segment.ThrowingEntity; //位置 throwing.position.Value = segment.RaySegment.Ray.origin; if (reflectiveFace) { //反射 throwing.throwingData.Velocity = Vector3.Reflect(throwing.throwingData.Velocity, hit.normal); //衰减 throwing.throwingData.Velocity *= (1 - throwing.throwingData.ThrowConfig.CollisionVelocityDecay); } }
private static bool IsHitGround(PlayerEntity playerEntity, float dist) { var gameObject = playerEntity.RootGo(); var prevLayer = gameObject.layer; IntersectionDetectTool.SetColliderLayer(gameObject, UnityLayerManager.GetLayerIndex(EUnityLayerName.User)); var startPoint = gameObject.transform.position; var valueRadius = playerEntity.characterContoller.Value.radius; //UnityLayers. // a shift lift up startPoint = startPoint + gameObject.transform.rotation * new Vector3(0f, valueRadius, 0f); RaycastHit outHit; // DebugDraw.DebugWireSphere(startPoint, Color.red, CastRadius, 1f); // DebugDraw.DebugWireSphere(startPoint + new Vector3(0,targetHeight - CastRadius - LiftUp,0), Color.magenta, CastRadius, 1f); var isHit = PhysicsCastHelper.SphereCast(startPoint, CastRadius, Vector3.down, out outHit, dist, UnityLayers.AllCollidableLayerMask, QueryTriggerInteraction.Ignore, 0.1f); //if (!isHit) { //DebugDraw.DebugWireSphere(startPoint,isHit ? Color.green : (playerEntity.characterContoller.Value.isGrounded ? Color.magenta : Color.red) ,CastRadius, isHit ? 0f:60f); } IntersectionDetectTool.SetColliderLayer(gameObject, prevLayer); return(isHit); }
void OnTriggerEnter(Collider collider) { if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.VehicleTrigger)) { _collidedTriggerCount++; var vehicle = VehicleEntityUtility.GetVehicleFromChildCollider(collider); if (vehicle != null) { SetCollisionState(vehicle, EVehicleCollisionState.Enter); var collisionTime = MyGameTime.time; if (collisionTime - _lastCollisionTime > 0.34f) { var damage = CalcPlayerCollisionDamage(vehicle); if (DamageEnabled && damage > 0.0f) { var sourcePlayer = vehicle.hasOwnerId ? AllContext.player.GetEntityWithEntityKey(vehicle.ownerId.Value) : null; VehicleDamageUtility.DoPlayerDamage(AllContext, sourcePlayer, _playerEntity, damage); } _lastCollisionTime = collisionTime; } } } }
private void DoExlopsionDamageToNeighboringObjects(VehicleEntity vehicle) { var explosionCenter = vehicle.GetExplosionCenter(); var layerMask = UnityLayerManager.GetLayerMask(EUnityLayerName.Player) | UnityLayerManager.GetLayerMask(EUnityLayerName.Vehicle); Collider[] colliders = Physics.OverlapSphere(explosionCenter, MaxOverlapRadius, layerMask); DoExplosionDamageToColliders(vehicle, colliders, explosionCenter); }
protected void HandleLoadedModel(PlayerEntity player, GameObject obj) { obj.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Player); PlayerEntityUtility.DisableCollider(obj.transform); if (!player.hasCharacterContoller) { var character = DefaultGo.CreateGameObject(player.entityKey.ToString()); character.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Player); CharacterController cc = PlayerEntityUtility.InitCharacterController(character); KinematicCharacterMotor kcc = PlayerEntityUtility.InitKinematicCharacterMotor(character); CharacterControllerContext characterControllerContext = new CharacterControllerContext( new UnityCharacterController(cc, !player.isFlagSelf), new Core.CharacterController.ConcreteController.ProneCharacterController(kcc, new ProneController()), new Core.CharacterController.ConcreteController.DiveCharacterController(kcc, new DiveController()), new Core.CharacterController.ConcreteController.SwimCharacterController(kcc, new SwimController()) ); var curver = character.AddComponent <AirMoveCurve>(); curver.AireMoveCurve = SingletonManager.Get <CharacterStateConfigManager>().AirMoveCurve; curver.MovementCurve = SingletonManager.Get <CharacterStateConfigManager>().MovementCurve; curver.PostureCurve = SingletonManager.Get <CharacterStateConfigManager>().PostureCurve; if (character.GetComponent <EntityReference>() == null) { character.AddComponentUncheckRequireAndDisallowMulti <EntityReference>(); } character.GetComponent <EntityReference>().Init(player.entityAdapter); var comp = character.AddComponent <PlayerVehicleCollision>(); comp.AllContext = _contexts; var appearanceManager = new AppearanceManager(); var characterControllerManager = new CharacterControllerManager(); characterControllerManager.SetCharacterController(characterControllerContext); var characterBone = new CharacterBoneManager(); characterBone.SetWardrobeController(appearanceManager.GetWardrobeController()); characterBone.SetWeaponController(appearanceManager.GetController <WeaponController>()); var weaponController = appearanceManager.GetController <WeaponController>() as WeaponController; if (null != weaponController) { weaponController.SetWeaponChangedCallBack(characterBone.CurrentWeaponChanged); weaponController.SetCacheChangeAction(characterBone.CacheChangeCacheAction); } player.AddCharacterControllerInterface(characterControllerManager); player.AddAppearanceInterface(appearanceManager); player.AddCharacterContoller(characterControllerContext); player.AddCharacterBoneInterface(characterBone); player.AddRecycleableAsset(character); player.AddPlayerGameState(PlayerLifeStateEnum.NullState); } }
private void InitialOneScene(UnityEngine.SceneManagement.Scene scene) { GameObject[] roots = scene.GetRootGameObjects(); int c1 = 0; int c2 = 0; int c3 = 0; int total = 0; for (int i = 0; i < roots.Length; i++) { GameObject obj = roots[i]; UnityEngine.Terrain t = obj.GetComponent <UnityEngine.Terrain>(); if (t == null) { Transform[] trans = obj.GetComponentsInChildren <Transform>(true); for (int j = 0; j < trans.Length; j++) { GameObject child = trans[j].gameObject; Vector2 pos = new Vector2(trans[j].position.x, trans[j].position.z); if (Math.Abs(pos.x) < 4000 && Math.Abs(pos.y) < 4000 && pos.magnitude > 1) { try { if (child.name.StartsWith("Prop") || child.name.ToLower().StartsWith("stone") || child.name.StartsWith("prop")) { if (child.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.SmallthingNear)) { smallMap.Insert(child, pos); c1++; } else { MidMap.Insert(child, pos); c2++; } } else { map.Insert(child, pos); c3++; } //child.SetActive(false); total++; } catch (Exception e) { _logger.ErrorFormat("culling insert error {0}", e.Message); } } } } } _logger.InfoFormat("culling insert t={4}, s={0},m={1},b={2} at scene {3}", c1, c2, c3, scene.name, total); }
protected override void InitComponent(PlayerEntity player, IContexts contexts) { var character = DefaultGo.CreateGameObject(player.entityKey.ToString()); character.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Player); var cc = PlayerEntityUtility.InitCharacterController(character); var kcc = PlayerEntityUtility.InitKinematicCharacterMotor(character); var characterControllerContext = new CharacterControllerContext( new UnityCharacterController(cc, ModelLoadHandler.InitActionWithOffset(), !player.isFlagSelf), new ProneCharacterController(kcc, new ProneController(), ModelLoadHandler.InitActionWithNoOffset()), new DiveCharacterController(kcc, new DiveController(), ModelLoadHandler.InitActionWithNoOffset()), new SwimCharacterController(kcc, new SwimController(), ModelLoadHandler.InitActionWithNoOffset()) ); var curver = character.AddComponent <AirMoveCurve>(); curver.AireMoveCurve = SingletonManager.Get <CharacterStateConfigManager>().AirMoveCurve; character.AddComponent <EntityReference>(); character.GetComponent <EntityReference>().Init(player.entityAdapter); var comp = character.AddComponent <PlayerVehicleCollision>(); comp.AllContext = contexts as Contexts; var appearanceManager = new AppearanceManager(); var characterControllerManager = new CharacterControllerManager(); characterControllerManager.SetCharacterController(characterControllerContext); var characterBone = new CharacterBoneManager(); characterBone.SetWardrobeController(appearanceManager.GetWardrobeController()); characterBone.SetWeaponController(appearanceManager.GetController <NewWeaponController>()); var weaponController = (NewWeaponController)appearanceManager.GetController <NewWeaponController>(); if (null != weaponController) { weaponController.SetWeaponChangedCallBack(characterBone.CurrentP1WeaponChanged, characterBone.CurrentP3WeaponChanged); weaponController.SetWeaponOrAttachmentDeleteCallBack(characterBone.WeaponOrAttachmentDel); weaponController.SetWeaponOrAttachementAddCallBack(characterBone.WeaponOrAttachmentAdd); weaponController.SetCacheChangeAction(characterBone.CacheChangeCacheAction); } player.AddCharacterControllerInterface(characterControllerManager); player.AddAppearanceInterface(appearanceManager); player.AddCharacterContoller(characterControllerContext); player.AddCharacterBoneInterface(characterBone); player.AddPlayerGameState(PlayerLifeStateEnum.NullState); player.AddPlayerResource(character); }
public void PlayerDead(bool isSelf = true) { SetLayer(_characterRoot, UnityLayerManager.GetLayerIndex(EUnityLayerName.NoCollisionWithEntity)); closeEye(); if (!isSelf) { _controller.enabled = false; } Logger.InfoFormat("PlayerDead :{0}", _characterRoot); }
void OnTriggerStay(Collider collider) { if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.VehicleTrigger)) { var vehicle = VehicleEntityUtility.GetVehicleFromChildCollider(collider); if (vehicle != null) { SetCollisionState(vehicle, EVehicleCollisionState.Stay); } } }
private RayCastTarget MakeCastTarget() { var go = new GameObject(DefaultName); var col = go.AddComponent <BoxCollider>(); col.isTrigger = true; var target = RayCastTargetUtil.AddRayCastTarget(go); go.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast); go.transform.parent = _poolRoot.transform; return(target); }
private static Vector3 GetNewBirthPositionOnOverlap(GameObject go) { var position = go.transform.position; if (SharedConfig.IsOffline || SharedConfig.IsServer) { var rigidBody = go.GetComponent <Rigidbody>(); int tryCount = 0; const float checkRadius = 5.0f; while (true) { var colliders = Physics.OverlapSphere(position, checkRadius, UnityLayerManager.GetLayerMask(EUnityLayerName.Vehicle)); if (colliders.Length == 0) { break; } var colliderCount = colliders.Length; var noOtherVehicle = true; for (int i = 0; i < colliderCount; ++i) { if (colliders[i].attachedRigidbody != rigidBody) { noOtherVehicle = false; break; } } if (noOtherVehicle) { break; } _logger.WarnFormat("There is a vehicle in birth position {0}", position); tryCount++; var angle = UnityEngine.Random.Range(0, 2 * (float)Math.PI); var dir = new Vector3(Mathf.Sin(angle), 0.0f, Mathf.Cos(angle)); position += checkRadius * tryCount * dir; const float liftHeight = 1000.0f; position.y += liftHeight; RaycastHit hit; if (Physics.Raycast(position, -Vector3.up, out hit, 2 * liftHeight, UnityLayers.SceneCollidableLayerMask)) { position = hit.point + new Vector3(0, 2.0f, 0); } } } return(position); }
private int?ProcessIgnoreLayers() { int?lastLayer = null; var mySelf = _playerContext.flagSelfEntity; if (null != mySelf && mySelf.hasCharacterContoller) { var characterController = mySelf.characterContoller.Value.gameObject; lastLayer = characterController.layer; characterController.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.User); } return(lastLayer); }
public void OnLoadSucc <T>(T source, UnityObject obj) { if (_param == null) { _dataSource.AddRecycleObject(obj); return; } if (obj.Address.Equals(_param.P3DefaultResAddr) || obj.Address.Equals(_param.P1DefaultResAddr)) { if (_param.DefaultGameObject == null) { _param.DefaultGameObject = obj; SetObjParam(_param.DefaultGameObject, UnityLayerManager.GetLayerIndex(EUnityLayerName.Player)); } else { _dataSource.AddRecycleObject(obj); } } else if (_param.HasAlterAppearance && obj.Address.Equals(_param.AlterResAddr)) { if (_param.AlternativeGameObject == null) { _param.AlternativeGameObject = obj; SetObjParam(_param.AlternativeGameObject, UnityLayerManager.GetLayerIndex(EUnityLayerName.Player)); } else { _dataSource.AddRecycleObject(obj); } } else { _dataSource.AddRecycleObject(obj); } if (_param.DefaultGameObject != null && _param.HasAlterAppearance == (_param.AlternativeGameObject != null)) { _param.PrepareMasks(); if (_loadFinishHandle != null) { _loadFinishHandle.Invoke(_param); } _dataSource.FinishLoadResource(_param, _index); _param = null; } }
private void DoExplosionDamageToColliders(VehicleEntity vehicle, Collider[] colliders, Vector3 explosionCenter) { foreach (var collider in colliders) { if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Player)) { DoExplosionDamangeToPlayer(vehicle, collider, explosionCenter); } else if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.Vehicle)) { DoExplosionDamangeToVehicle(vehicle, collider, explosionCenter); } } }