public virtual bool Move(PlayerCharacter player) { if (Type == ObjectType.Stair) { return(false); } if (CommonFunction.IsNull(ThrowPoint) == true) { return(false); } //目標位置の取得 Vector3 target = new Vector3(ThrowPoint.X * PositionUnit, PosY, ThrowPoint.Y * PositionUnit); //距離が一定以上あったらアクションさせない if (Vector3.Distance(player.ThisTransform.position, this.ThisTransform.position) > 6) { //強制的にキャラポジを移動させて終了 ThisTransform.localPosition = target; } //目標地点に到着したら終了 if (Vector3.Distance(ThisTransform.localPosition, target) <= MinDistance) { //投擲位置に達したらキャラクタコンポーネントを削除し現在位置を強制移動 //if(ThisDisplayObject.GetComponent<CharacterController>()) //{ // Destroy(ThisDisplayObject.GetComponent<CharacterController>()); //} ResetObjectPosition(); ThrowPoint = null; return(false); } //移動単位の取得 Vector3 velocity = (target - ThisTransform.localPosition).normalized; //移動方向と移動単位が一致するか調べる if (CommonFunction.CheckDirectionVector(Direction, velocity) == true) { //一致していれば通常の移動操作 //キャラクターを目標に移動 //ThisDisplayObject.transform.localPosition += (velocity * MoveSpeed); //ThisDisplayObject.transform.localPosition += CommonFunction.GetVelocity(velocity, MoveSpeed); ThisTransform.Translate(CommonFunction.GetVelocity(velocity, MoveSpeed), Space.World); } else { //一致していなければ目標地点を追い越したとみなす //強制的にキャラポジを移動させて終了 ThisTransform.localPosition = target; } return(true); }
private void Update() { ThisTransform.Translate(ThisTransform.forward * _speed * Time.deltaTime, Space.World); }