void InitialAiParam() { if (mParam != null) return; mParam = new AiParam (); mParam.Owner = this.gameObject; mParam.Anim = mAnim; mParam.NavAgent = mAgent; mParam.OwnerCollider = mCollider; mParam.OwnerRigidbody = mRigidbody; mParam.HandBall = mHandBall; mParam.Team = mTeam; mParam.WeightIK = 0F; mParam.Vec3Target = this.gameObject.transform.position + this.gameObject.transform.forward * 5F; mParam.OnAiStrategyChanged = OnAiStrategyChanged; mParam.OnAiActionChanged = OnAiActionChanged; mParam.OnAiEmotionChanged = OnAiEmotionChanged; OnAiStrategyChanged (mCurStrategy); }
public override void OnLeave(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; _param.NavAgent.Stop (); }
bool IsCatchable(ref AiParam _param) { if (_param == null || _param.NavAgent == null || _param.ObjTarget == null) return false; return Vector3.Distance (_param.Owner.transform.position, _param.ObjTarget.transform.position) <= CATCHABLE_DISTANCE; }
void DoJump(ref AiParam _param) { if (_param == null || _param.OwnerRigidbody == null) return; _param.OwnerRigidbody.AddForce(Vector3.up * JUMP_FORCE, ForceMode.Impulse); }
public override void OnEnter(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Walk); //_param.NavAgent.Resume (); Movement (ref _param); int searchMax = 30; for (var i = 0; i < searchMax; i++) { Vector3 randomPoint = _param.Owner.transform.position + Random.insideUnitSphere * 3F; NavMeshHit hit; if (NavMesh.SamplePosition (randomPoint, out hit, 1F, 0xFF)) { NavMeshPath path = new NavMeshPath(); if(_param.NavAgent.CalculatePath(hit.position, path) == true) { _param.NavAgent.SetPath(path); return; } } } }
public override void OnEnter(ref AiParam _param) { if (_param == null || _param.NavAgent == null || _param.ObjTarget == null) return; _param.NavAgent.Resume (); _param.NavAgent.SetDestination (_param.ObjTarget.transform.position); }
public override void OnUpdate(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; IncreasingIK (ref _param); if(IsArrival(ref _param) == true) _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Standby); }
public override void OnLeave(ref AiParam _param) { if (_param == null) return; Stop (ref _param); _param.Vec3Target = _param.Owner.transform.position + _param.Owner.transform.forward * VISIBLED_RANGE; }
public override void OnUpdate(ref AiParam _param) { if (_param == null || _param.NavAgent == null || _param.ObjTarget == null) return; IncreasingIK (ref _param); if(IsCatchable(ref _param) == true) _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Idle); else if(IsArrival(ref _param) == true) _param.NavAgent.SetDestination (_param.ObjTarget.transform.position); }
public override void OnEnter(ref AiParam _param) { if (_param == null || _param.NavAgent == null || _param.ObjTarget == null) return; _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Run); //_param.NavAgent.Resume (); Movement (ref _param); _param.NavAgent.SetDestination (_param.ObjTarget.transform.position); }
public override void OnLeave(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; //_param.NavAgent.Stop (); Stop (ref _param); if(_param.ObjTarget != null) _param.Vec3Target = _param.ObjTarget.transform.position; else _param.Vec3Target = _param.Owner.transform.position + _param.Owner.transform.forward * CATCHABLE_DISTANCE; }
public override void OnEnter(ref AiParam _param) { if (_param == null) return; //if (_param.NavAgent != null) _param.NavAgent.enabled = false; _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Idle); _param.WaitTime = PAINT_WALL_FREQ; }
public override void OnEnter(ref AiParam _param) { if (_param == null) return; //if (_param.NavAgent != null) _param.NavAgent.enabled = false; _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Idle); if (mSnowBall == null) mSnowBall = GameObject.Instantiate(Resources.Load("SnowBall")) as GameObject; if (mSnowBall != null) mSnowBall.name = "FreeBall"; }
public override void OnEnter(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; //_param.NavAgent.Resume (); Movement (ref _param); Vector3 home = Camera.main.transform.position + (Camera.main.transform.forward * 1F); _param.NavAgent.SetDestination (home); }
public override void OnLeave(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; //_param.NavAgent.Stop (); Stop (ref _param); _param.HoldBall = false; _param.Vec3Target = Camera.main.transform.position; }
public override void OnEnter(ref AiParam _param) { if (_param == null) return; _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Idle); _param.Weight = 0F; _param.Vec3Start = _param.Vec3Target; _param.Vec3End = ((Quaternion.Euler (new Vector3 (0F, Random.Range(-45F,45F), 0F)) * _param.Owner.transform.forward) * VISIBLED_RANGE) + _param.Owner.transform.position; }
public override void OnLeave(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; //_param.NavAgent.enabled = true; if (mSnowBall != null) { GameObject.Destroy(mSnowBall); mSnowBall = null; } }
public override void OnAnimatorIK(ref AiParam _param) { if (_param == null) return; _param.Anim.SetLookAtWeight (_param.WeightIK, 1F, 1F, 1F, 1F); _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 0F); _param.Anim.SetIKRotationWeight(AvatarIKGoal.RightHand, 0F); _param.Anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, 0F); _param.Anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, 0F); }
public override void OnEnter(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Walk); _param.Weight = 0F; //_param.NavAgent.Resume (); Movement (ref _param); SearchReloadPoint (ref _param); }
public override void OnUpdate(ref AiParam _param) { if (_param == null) return; DecreasingIK (ref _param); _param.WaitTime -= Time.deltaTime; if(_param.WaitTime <= 0F) { _param.WaitTime = PAINT_WALL_FREQ; DoPaintWall(ref _param); } }
public override void OnAnimatorIK(ref AiParam _param) { if (_param == null) return; _param.Anim.SetLookAtWeight (_param.WeightIK, 1F, 1F, 1F, 1F); _param.Anim.SetLookAtPosition (_param.Vec3Target); _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 1F); _param.Anim.SetIKPosition(AvatarIKGoal.RightHand, _param.Vec3Target + (Camera.main.transform.right * -0.5F)); _param.Anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1F); _param.Anim.SetIKPosition(AvatarIKGoal.LeftHand, _param.Vec3Target + (Camera.main.transform.right * 0.5F)); _param.Anim.SetIKRotationWeight(AvatarIKGoal.RightHand, 0F); _param.Anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, 0F); }
public override void OnUpdate(ref AiParam _param) { if (_param == null) return; _param.Vec3Target = _param.Owner.transform.position + _param.Owner.transform.forward * VISIBLED_RANGE; DecreasingIK (ref _param); if(SearchForEnemy(ref _param, VISIBLED_RANGE) == true) { _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Fight); } else if(IsArrival(ref _param) == true) { _param.OnAiEmotionChanged(UnityChan_Ctrl.EmotionState.Default); _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Idle); } }
public override void OnUpdate(ref AiParam _param) { if (_param == null) return; _param.Weight += Time.deltaTime * 0.5F; _param.Weight = Mathf.Clamp (_param.Weight, 0F, 1F); DecreasingIK (ref _param); if(IsArrival(ref _param) == true) { SearchReloadPoint (ref _param); } else if(1F <= _param.Weight) { _param.HoldBall = true; _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Fight); } }
void DoPaintWall(ref AiParam _param) { if (_param == null || _param.Owner == null) return; GameObject snowBall = GameObject.Instantiate(Resources.Load("SnowBall")) as GameObject; if (snowBall == null) return; snowBall.transform.position = _param.Owner.transform.position + _param.Owner.transform.up + _param.Owner.transform.forward; snowBall.transform.rotation = Quaternion.LookRotation(_param.Owner.transform.forward); Rigidbody rigidbody = snowBall.GetComponent<Rigidbody>(); if (rigidbody == null) rigidbody = snowBall.AddComponent<Rigidbody>(); Vector3 throwForce = (_param.Owner.transform.up * Random.Range(-0.5F,2F)) + (_param.Owner.transform.forward * Random.Range(0F,2F)) + (_param.Owner.transform.right * Random.Range(-0.5F,0.5F)); rigidbody.AddForce(throwForce, ForceMode.Impulse); }
public override void OnUpdate(ref AiParam _param) { if (_param == null) return; IncreasingIK (ref _param); Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); _param.Vec3Target = Camera.main.transform.position + ray.direction * 0.5F; if (mSnowBall != null) mSnowBall.transform.position = _param.Vec3Target; /*if(IsGround(ref _param) == true) { DoJump(ref _param); }*/ DoThrowBall(ref _param); }
protected void SearchReloadPoint(ref AiParam _param) { if (_param == null) return; int searchMax = 30; for (var i = 0; i < searchMax; i++) { Vector3 randomPoint = _param.Owner.transform.position + Random.insideUnitSphere * 3F; NavMeshHit hit; if (NavMesh.SamplePosition (randomPoint, out hit, 1F, 0xFF)) { NavMeshPath path = new NavMeshPath(); if(_param.NavAgent.CalculatePath(hit.position, path) == true) { _param.NavAgent.SetPath(path); return; } } } }
public override void OnAnimatorIK(ref AiParam _param) { if (_param == null) return; _param.Anim.SetLookAtWeight (_param.WeightIK, 1F, 1F, 1F, 1F); if(_param.ObjTarget != null) { _param.Anim.SetLookAtPosition (_param.ObjTarget.transform.position); _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 1F); _param.Anim.SetIKPosition(AvatarIKGoal.RightHand, _param.ObjTarget.transform.position); } else { _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 0F); } _param.Anim.SetIKRotationWeight(AvatarIKGoal.RightHand, 0F); }
public override void OnUpdate(ref AiParam _param) { if (_param == null) return; IncreasingIK (ref _param); _param.Weight += Time.deltaTime * 0.5F; _param.Weight = Mathf.Clamp (_param.Weight, 0F, 1F); _param.Vec3Target = Vector3.Lerp (_param.Vec3Start, _param.Vec3End, _param.Weight); if(SearchForEnemy(ref _param, VISIBLED_RANGE) == true) { _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Fight); } else if(1F <= _param.Weight) { _param.OnAiEmotionChanged(UnityChan_Ctrl.EmotionState.Default); _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Patrol); } }
bool IsShootable(ref AiParam _param) { if (_param == null || _param.ObjTarget == null) return false; /* Collider col = _param.ObjTarget.GetComponent<Collider>(); if (col == null) return false; Ray ray = new Ray (_param.Owner.transform.position + _param.Owner.transform.up, _param.Owner.transform.forward); RaycastHit hitInfo; if (col.Raycast(ray, out hitInfo, FIRE_RANGE)) { _param.Vec3Target = hitInfo.point; return true; } return false; */ return Vector3.Distance (_param.OwnerCollider.gameObject.transform.position, _param.ObjTarget.transform.position) < FIRE_RANGE; }
public override void OnUpdate(ref AiParam _param) { if (_param == null || _param.NavAgent == null) return; if ( _param.ObjTarget == null) { _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Idle); } else { IncreasingIK (ref _param); if(IsCatchable(ref _param) == true) { GameObject.Destroy(_param.ObjTarget); _param.ObjTarget = null; _param.HoldBall = true; _param.OnAiStrategyChanged(AiFactory.AiStrategyType.GoBack); } else if(IsArrival(ref _param) == true) _param.NavAgent.SetDestination (_param.ObjTarget.transform.position); } }