Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 private void Update()
 {
     ThisTransform.Translate(ThisTransform.forward * _speed * Time.deltaTime, Space.World);
 }