private void Start() { playerCollider = player.GetComponent <ObjectCollider>(); frasesObj.Add("Poça", new List <string> { "O chão está muito escorregadio, você não consegue passar", "Você usou a camiseta para secar o chão" }); frasesObj.Add("Madeira", new List <string> { "A escada está bloqueada", "Você usou o pé de cabra para quebrar as tábuas" }); frasesObj.Add("Ratos", new List <string> { "Os ratos não de deixam passar, tente usar algo para afastá-los", "Você usou o lanche para afastar os ratos" }); frasesObj.Add("Cadeado", new List <string> { "A porta está trancada", "Você usou a chave para abrir a porta" }); frasesObj.Add("Vidro", new List <string> { "O vidro está rachado, será que você consegue quebrá-lo?", "Você usou o taco de beisebol para quebrar o vidro" }); frasesObj.Add("Porta eletrica", new List <string> { "Você não possui os items necessários", "A trava elétrica não funciona sem eletricidade", "A trava elétrica não destrava sem o cartão", "Você usou o cartão do funcionário para abrir a porta" }); for (int i = 0; i < itenList.Count; i++) { if (playerCollider.objectList.Contains(itenList[i].name) && itenList[i].name != "Cartao de funcionario") { this.gameObject.SetActive(false); } } }
//useConfAtt是否使用配表的属性 public void Init(int actorID, int actorLv, bool useConfAtt, EmActorFaction _actorFaction, EmActorType _actorType) { actorConf = DBActorAttributeTable.GetRecord(actorID); actorFaction = _actorFaction; actorType = _actorType; if (useConfAtt) { orgAttribute = TqmDatabase.CreateActorAttributeData(actorConf, actorLv); } else { orgAttribute = ActorAttributeDataCollection.GetActorAttributeData(actorID); } curAttribute = TqmDatabase.CloneActorAttributeData(orgAttribute); objectbase = gameObject.GetComponent <ObjectBase>(); objectcollider = gameObject.GetComponent <ObjectCollider>(); audioSource = gameObject.AddComponent <AudioSource>(); objectbase.x2dAnim = ResourceLoader.GetX2dAniamtion(actorConf.animationName, transform); foreach (int i in actorConf.skillIdList) { activeSkillList.Add(skillStateManager.GetSkillState(i)); } objectcollider.size = actorConf.size; ChangeStatus(EmActorStatus.Idle); }
/// <summary> /// Initialize player controller /// </summary> public override void Start() { _player = ParentGameObject as Player; _keyObserver = _player.GetComponent <KeyObserver>(); _transform = _player.GetComponent <Transform>(); _collider = _player.GetComponent <ObjectCollider>(); _rndr = new Render(); }
public void OnEnterCollier(ObjectCollider target) { if (target.name.Contains("Gate")) { SceneManagerBattle battle = GameMain.curSceneManager as SceneManagerBattle; battle.OnPlayerEnterDoor(); } }
public static void UnRegist(ObjectCollider c) { if (colliderList.Remove(c)) { //Debug.Log("colliderList.count = " + colliderList.Count); } else { Debug.LogError(c.name + " is not existed"); } }
public bool RemoveFromCollisionObjectList(ObjectCollider oc) { int i = collisionObjectList.IndexOf(oc); if (i >= 0) { collisionObjectList.RemoveAt(i); return(true); } return(false); }
public bool AddToCollisionObjectList(ObjectCollider oc) { int i = collisionObjectList.IndexOf(oc); if (i < 0) { collisionObjectList.Add(oc); return(true); } return(false); }
public static void Regist(ObjectCollider c) { if (colliderList.Find(c) == null) { colliderList.AddLast(c); //Debug.Log("colliderList.count = " + colliderList.Count); } else { Debug.LogError(c.name + " is alread existed"); } }
public void Update_Pos() { Vector3 pos = Vector3.zero; ObjectCollider collider = realObject.GetComponent <ObjectCollider>(); if (collider != null) { pos = collider.realPos; } else { pos = realObject.realPos; } pos.x += ThreeDMirrorManager.MIRROR_OFFSET; //平移到镜像所在区域 transform.position = pos; }
public void UpdateSize() { ObjectCollider collider = realObject.GetComponent <ObjectCollider>(); Vector3 size = Vector3.zero; if (collider == null) { size = new Vector3(5, 5, 5); } else if (collider.colliderType == EmObjectColliderType.Box) { size = collider.size; } else if (collider.colliderType == EmObjectColliderType.Sphere) { size = new Vector3(collider.radius, collider.radius, collider.radius); } transform.localScale = size; }
//触发器不参与判断,返回false public static bool IsInCollision(ObjectBase ob) { ObjectCollider c = ob.GetComponent <ObjectCollider>(); if (c == null) { return(false); } LinkedListNode <ObjectCollider> node = colliderList.First; while (node != null) { if (node.Value != c && !node.Value.isTrriger) //不要和自己比较 { if (IsCollision(c, node.Value)) { return(true); } } node = node.Next; } return(false); }
//需要统一到世界坐标下处理,size也要受scale影响 private static bool IsCollision(ObjectCollider c1, ObjectCollider c2) { return(IsCollision(c1.realPos, c1.size, c2.realPos, c2.size)); }
public static bool MoveWithCollision(ObjectBase ob, Vector3 newPos) { if (colliderList.Count == 0) { return(true); } ObjectCollider c = ob.GetComponent <ObjectCollider>(); if (c == null) { return(false); } //对所有物体进行碰撞判断 Vector3 oldPos = ob.realPos; Vector3[] moveSignArray = new Vector3[colliderList.Count]; //xyz:0表示这个方向不会碰撞,1表示会碰撞 LinkedListNode <ObjectCollider> node1 = colliderList.First; int i = -1; while (node1 != null) { i++; if (node1.Value.gameObject.layer != LayerMask.NameToLayer("Barrier")) { node1 = node1.Next; continue; } if (node1.Value == c) { node1 = node1.Next; continue; } Vector3 sign = moveSignArray[i]; Vector3 t = oldPos; t.x = newPos.x; if (IsCollision(t, c.size, node1.Value.realPos, node1.Value.size)) { sign.x = 1; } t.x = oldPos.x; t.y = newPos.y; if (IsCollision(t, c.size, node1.Value.realPos, node1.Value.size)) { sign.y = 1; } t.y = oldPos.y; t.z = newPos.z; if (IsCollision(t, c.size, node1.Value.realPos, node1.Value.size)) { sign.z = 1; } node1 = node1.Next; } Debug.Log(i); //确定最终可以移动至的位置 //如果所有的x都为0,说明x是可以移动的 //for() return(false); }
public void EnterCollier(ObjectCollider target) { objectBase.SendMessage("OnEnterCollier", target, SendMessageOptions.DontRequireReceiver); }
/// <summary> /// Get information of parent game object /// </summary> public override void Start() { _parent = ParentGameObject as Enemy; _transform = _parent.GetComponent <Transform>(); _collider = _parent.GetComponent <ObjectCollider>(); }