public override void moved(Vector3 aVector)
    {
        //垂直移動した場合の対応策
        Vector2 tVector = new Vector2(aVector.x, aVector.z);

        if (tVector.x == 0 && tVector.y != 0)
        {
            tVector = new Vector2((mLastDirection == DirectionImageH.left || mLastDirection == DirectionImageH.stayLeft) ? -0.1f : 0.1f, tVector.y);
        }

        switch (DirectionOperator.convertToDirectionH(tVector))
        {
        case DirectionH.left:    //左移動
            if (mLastDirection != DirectionImageH.left)
            {
                mLastDirection = DirectionImageH.left;
                mAnimator.setRects(mFrameRects[3]);
                mAnimator.mInterval = 0.2f;
            }
            return;

        case DirectionH.right:    //右移動
            if (mLastDirection != DirectionImageH.right)
            {
                mLastDirection = DirectionImageH.right;
                mAnimator.setRects(mFrameRects[2]);
                mAnimator.mInterval = 0.2f;
            }
            return;

        case DirectionH.none:    //静止
            if (mLastDirection == DirectionImageH.left)
            {
                mLastDirection = DirectionImageH.stayLeft;
                mAnimator.setRects(mFrameRects[1]);
                mAnimator.mInterval = 0.4f;
            }
            else if (mLastDirection == DirectionImageH.right)
            {
                mLastDirection = DirectionImageH.stayRight;
                mAnimator.setRects(mFrameRects[0]);
                mAnimator.mInterval = 0.4f;
            }
            if (mLastDirection == DirectionImageH.stayLeft)
            {
            }
            else if (mLastDirection == DirectionImageH.stayRight)
            {
            }
            return;
        }
    }
    public override void setDirection(Vector3 aVector)
    {
        switch (DirectionOperator.convertToDirectionH(new Vector2(aVector.x, aVector.z)))
        {
        case DirectionH.left:
            mLastDirection = DirectionImageH.stayLeft;
            mAnimator.setRects(mFrameRects[1]);
            return;

        case DirectionH.right:
        case DirectionH.none:
            mLastDirection = DirectionImageH.stayRight;
            mAnimator.setRects(mFrameRects[0]);
            return;
        }
        mLastDirection = DirectionImageH.none;
    }
Пример #3
0
    /// <summary>引数のentityに話しかけられた時に発火するイベントのkeyを取得</summary>
    public string getAnswerKey(MapEntity aEntity)
    {
        //最小外接矩形の距離ベクトル
        Vector2 tDistance = ColliderEditer.planeDistance(aEntity.mEntityPhysicsBehaviour.mAttriubteCollider, this.gameObject.GetComponent <Collider>());

        if (tDistance == Vector2.zero)  //最小外接矩形が重なっていた場合は座標の距離ベクトルを使う
        {
            tDistance = aEntity.mMapPosition.vector2 - mBehaviour.mMapPosition.vector2;
        }
        //話かけてきた方向で分岐
        switch (DirectionOperator.convertToDirection(tDistance))
        {
        case Direction.up:
            if (mSpeakFromUp != "")
            {
                return(mSpeakFromUp);
            }
            break;

        case Direction.down:
            if (mSpeakFromDown != "")
            {
                return(mSpeakFromDown);
            }
            break;

        case Direction.left:
            if (mSpeakFromLeft != "")
            {
                return(mSpeakFromLeft);
            }
            break;

        case Direction.right:
            if (mSpeakFromRight != "")
            {
                return(mSpeakFromRight);
            }
            break;
        }
        return(mSpeakDefault);
    }