public void Begin() { selfController.RoleAnimator.SetInteger("qteState", 1); targetController.RoleAnimator.SetTrigger("qte_dog_to_human"); selfController.IsQte = true; targetController.IsQte = true; // 给qte目标设置朝向 add by TangJian 2019/3/20 21:47 targetController.SetDirectionInt(-selfController.GetDirectionInt()); LockTarget(); _qteState = QteState.QteRunning; }
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnStateEnter(animator, stateInfo, layerIndex); lazyInit(animator); float angle = animator.GetFloat("MagicAngle"); // float angle_z; // float x = new Random().Next(-20, 21); // System.Random y_y = new System.Random(); // int y = y_y.Next(-2100, 2100); // System.Random z_z = new System.Random(); // int z = z_z.Next(-2100, 2100); // angle =(float) (y*0.01); // angle_z = (float) (z*0.01); Quaternion quaternion = Quaternion.Euler(0, angle, z: 0); var localPosition = quaternion * Vector3.right; localPosition.z *= -1; localPosition.x *= RoleController.GetDirectionInt(); RoleController.SetLocalPointPosition(localPosition); }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { // Debug.Log("HumanMoveByAnimBehaviour OnStateUpdate"); AnimatorStateInfo nextStateInfo = animator.GetNextAnimatorStateInfo(0); bool hasNext = nextStateInfo.fullPathHash != 0; var skeletonAnimator = roleController.SkeletonAnimator; var roleAnimController = roleController.RoleAnimController; foreach (var bone in skeletonAnimator.skeleton.Bones) { if (bone.Data.name == "root") { Vector3 moveByPos = new Vector3(-bone.X, 0, 0); roleAnimController.transform.localPosition = roleController.GetDirectionInt() > 0 ? moveByPos : -moveByPos; if (hasNext) { } else { var movePosition = new Vector3(); if (lastRootPosition == null) { lastRootPosition = moveByPos; } else { movePosition = moveByPos - lastRootPosition; lastRootPosition = moveByPos; movePosition.x *= -roleController.GetDirectionInt(); } Debug.Log("movePosition = " + movePosition); if (movePosition.magnitude > 0.001) { roleController.CharacterController.Move(movePosition); } } break; } } }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnStateEnter(animator, stateInfo, layerIndex); if (roleController == null) { roleController = animator.GetComponentInParent <Tang.RoleController>(); } if (roleController != null) { if (roleController.GetDirectionInt() > 0) { roleController.SetDirection(Tang.Direction.Left); } else { roleController.SetDirection(Tang.Direction.Right); } } }
public static async void ExecuteRoleAction(RoleController roleController, ActionData actionData) { if (actionData.chance >= Random.Range(0, 101)) { switch (actionData.type) { case ActionType.AddAttr: { roleController.AddAttr((AttrType)actionData.int1, actionData.float1); // roleController.AddAttr(actionData.string1, actionData.float1); } break; case ActionType.AddAnim: { var animGameObject = AnimManager.Instance.PlayAnim(actionData.type + actionData.string1, actionData.string1, actionData.bool1, roleController.CharacterController.bounds.center + new Vector3(0, 0, -0.5f), 1, 1, actionData.float1, roleController.transform); } break; case ActionType.RemoveAnim: { AnimManager.Instance.removeAnim(actionData.type + actionData.string1); } break; case ActionType.SetColor: // 变红 roleController.SkeletonAnimator.skeleton.DoColorTo(new Color(actionData.float1, actionData.float2, actionData.float3), 0.2f).OnComplete(() => { roleController.SkeletonAnimator.skeleton.DoColorTo(Color.white, 0.2f); }); break; case ActionType.CreateDamage: var triggerObject = GameObject.Instantiate(await AssetManager.LoadAssetAsync <GameObject>("Assets/Resources_moved/Prefabs/Trigger/TriggerCube.prefab")); triggerObject.tag = "Damage"; triggerObject.layer = LayerMask.NameToLayer("Interaction"); float destroyDelayTime = 0.1f; Tools.RemoveComponent <TriggerController>(triggerObject); var damageController = triggerObject.AddComponent <DamageController>(); // 不渲染 add by TangJian 2017/07/07 22:40:39 { var meshRenderer = triggerObject.GetComponent <MeshRenderer>(); if (DebugManager.Instance.debugData.debug) { meshRenderer.enabled = true; destroyDelayTime = 1; } else { meshRenderer.enabled = false; } } // 设置大小 add by TangJian 2017/07/07 22:40:40 { var boxCollider = triggerObject.GetComponent <BoxCollider>(); triggerObject.transform.localScale = new Vector3(actionData.vector3_2.x, actionData.vector3_2.y, actionData.vector3_2.z); } // 设置位置 add by TangJian 2017/07/07 22:34:48 { triggerObject.transform.parent = roleController.gameObject.transform.parent; // var a = direction; var x = roleController.gameObject.transform.localPosition.x + actionData.vector3_1.x * roleController.GetDirectionInt(); var y = roleController.gameObject.transform.localPosition.y + actionData.vector3_1.y; var z = roleController.gameObject.transform.localPosition.z + actionData.vector3_1.z; triggerObject.transform.localPosition = new Vector3(x, y, z); } var damageData = new DamageData(); damageController.damageData = damageData; // 设置持有者 add by TangJian 2017/07/27 20:26:44 damageData.teamId = roleController.RoleData.TeamId; damageData.owner = roleController.gameObject; damageData.itriggerDelegate = roleController; // 力度 add by TangJian 2017/07/24 15:16:23 { damageData.force = new Vector3(roleController.GetDirectionInt() * actionData.vector3_3.x, actionData.vector3_3.y, actionData.vector3_3.z); } // 攻击方向 add by TangJian 2017/07/24 15:17:37 { damageData.direction = new Vector3(roleController.GetDirectionInt() * (int)actionData.int2, 0, 0); } // 攻击类别 add by TangJian 2017/07/24 15:17:35 { damageData.hitType = (int)actionData.int1; } // 攻击击退 add by TangJian 2017/08/29 22:18:55 // { // damageData.targetMoveBy = new Vector3(roleController.getDirectionInt() * roleAtkFrameEventData.targetMoveBy.x, roleAtkFrameEventData.targetMoveBy.y, roleAtkFrameEventData.targetMoveBy.z); // } // 伤害效果类型 add by TangJian 2017/08/16 15:33:01 // { // var mainHandWeapon = RoleData.EquipData.getMainHand<WeaponData>(); // if (mainHandWeapon != null) // { // damageData.damageEffectType = mainHandWeapon.damageEffectType; // } // } // 攻击力 add by TangJian 2017/07/24 15:17:22 // damageData.atk = roleData.Atk * roleAtkFrameEventData.atk; // 暴击 add by TangJian 2017/12/20 21:50:30 // if (roleData.FinalCriticalRate >= UnityEngine.Random.Range(0.0f, 1.0f)) // { // //damageData.isCritical = true; // //damageData.atk *= roleData.CriticalDamage; // } triggerObject.DestoryChildren(); Tools.Destroy(triggerObject, destroyDelayTime); break; } } }