Unity | アニメーションモジュールのスクロールオプションボックス

1.エフェクトアニメーション

それがあなたの望むものではない場合は、私はあなたを保存して読み続けます

 2. 作者の言葉

私にとって、大量のデータを計算するのはあまりにも難しいので、ある方法を考えました

3. 基本的なスキルの要件

スクロールビューを使用する必要がある

4 番目に、トピックを入力します 

1. まずscrollViewを作成し、その中にやりたいことを入れます

2. 次の難点は、ブロックが指定位置付近に移動するとブロックが大きくなってしまうことです

分析: scrollView がブロックを移動すると、実際には Content の位置が移動します。

したがって、ブロックのローカル位置は変更されないため、世界座標を使用して計算する必要があります。

a. まず目的の座標を決定します

この図では、最初の 0 の座標を必要な座標とします。

ただし、ここで注意する必要があるのは、後でズームインするときは、中央からズームインすることを期待する必要があることです。

したがって、座標のアンカーポイントを変更する必要があります

座標を中央の位置に変更して、座標を見てみましょう

 彼の座標は 0,360 です。この位置を基準として使用し、上下 100 ずつ変更し始めます。

ただし、これはローカル座標です。0,360 の世界座標が必要です。

b. ローカル座標をワールド座標に変換する

備考:ローカル座標をワールド座標に変換する方法

public Vector2 anchorsPositon= new Vector2(0,360);

//本地转换世界坐标时,它需要知道这个坐标是谁的,或者说相对于谁的坐标
//在这里我们就是第一个0,那个物体
public Transform anvhorsPositonP;

   private void Start()
    {
        //TransformPoint(),是本地转世界坐标的方法
        wordPositon = anvhorsPositonP.TransformPoint(anchorsPositon);
    }

 c. 最大倍率とその計算方法を決定する

目的: コードの計算が分からないのでここを見てください

物体と設定した座標の距離が400、設定した距離が300の場合、
倍数は400/300=1.33となり、1を超えるので移動したくない
距離が150の場合ここで、設定した距離は 300、
乗数は 0.5、50% に拡大したいとします。

数学的計算:

オブジェクトの座標は y で、私が設定した座標は y1 です

したがって、y-y1 の絶対値は座標間の距離になります。

与えられた距離は d です

次に、(y-y1)/d の絶対値

上記で計算された乗数

1の倍数、

負の数の場合は拡大されません、つまり *1

正の数の場合、対応する倍数を拡大します

メモ方法:

Math.Max(1 つの数値、別の数値)

これは、どちらが大きいかを選択する方法です。たとえば、int i = Math.Max(0, 2)

答えは2です

   //这个脚本,我是打算每个方块上都挂一个的

    public Vector2 anchorsPositon= new Vector2(0,360);
    public Transform anvhorsPositonP;

    //我在选的坐标的上下150开始变化
    public float distance = 150;
    //最大变化1.5倍
    public float sizePersent = 1.5f;

    //记录一下初始的物体大小
    private Vector2 initialSize;
    //记录转换出来的世界坐标
    private Vector2 wordPositon;

    private void Start()
    {
        //这句就是记录现在这个方块是多大,宽多少,高多少
        initialSize = transform.GetComponent<RectTransform>().sizeDelta;
        //略,前面讲过了
        wordPositon = anvhorsPositonP.TransformPoint(anchorsPositon);
    }

    void Update()
    {
        //我知道现在这个方块的世界坐标的y
        float y = transform.position.y;

        //Math.Abs(y - wordPositon.y):计算现在这个坐标离我定的坐标还多远
        //(Math.Abs(y - wordPositon.y) / distance):计算这个距离是我希望距离的几倍
        //persent就是我最后打算放大多少
        float persent = Math.Max(0, 1 - (Math.Abs(y - wordPositon.y) / distance));

        //计算放大以后的宽高
        Vector2 size = initialSize + initialSize * (sizePersent - 1) * persent;
        //赋值计算好的宽高
        transform.GetComponent<RectTransform>().sizeDelta = size;
    }

d. 最後に、スクリプトをオブジェクトにハングします。

 5、既製

以上が内容ですが、直接見たくないお宝を使いたい場合は、

リンクを開けない場合は、投稿されたばかりなのでまだ審査中です。

 https://download.csdn.net/download/weixin_49427945/87855137

おすすめ

転載: blog.csdn.net/weixin_49427945/article/details/131002099