各位大神,怎么讓canvas下面的好幾個不同位置的image ,在點擊它的時候都能夠實作從自身位置移動到螢屏中心位置
uj5u.com熱心網友回復:
還有就是能夠實作點擊的時候移動到中心位置,image上出現一個back鍵,點擊后回到原位置,并且能夠實作放大和縮小的影片效果
uj5u.com熱心網友回復:
Vector3.Lerp(Vector3 a, Vector3 b, float t);
uj5u.com熱心網友回復:
你可以用dotween插件做這個事情,tween影片有個oncomplete回呼 在回呼 同樣用dotween執行回到原位置的影片,在最開始移動時自己記錄一個原始位置.
如果不用dotween 也可以在update里面自己寫影片 如樓上所說 用vector3.lerp方法 移動到螢屏中間Screen.width/2,Screen.height/2
uj5u.com熱心網友回復:
怎么能夠控制它的移動速度。用vector3.lerp這個方法能控制嗎?
uj5u.com熱心網友回復:
Quote: 參考 3 樓 Lqyilo 的回復:
怎么能夠控制它的移動速度。用vector3.lerp這個方法能控制嗎?
uj5u.com熱心網友回復:
移動: 本質就是 他的位置position 每一幀慢慢變化過去。
按鈕縮放 一般就是用button 組件,里面掛通用的按鈕Animator , 按下縮放 松開縮放下。
uj5u.com熱心網友回復:
vector3.lerp 最后一個引數是過渡的百分比,自己算過渡時間就可以了
lerp偽碼大致如下:
vec lerp(vec A,vec B,percent)
{
return A * (1.0 - percent) + B * percent;
}
所以自己算總時間,從影片開始播放時開始累加 deltaTime ,這樣就可以獲得已經播放的時間passTime ,
percent = passTime / totalTime;
uj5u.com熱心網友回復:
[b]參考 7 樓 wurh80 的回復: vector3.lerp 最后一個引數是過渡的百分比,自己算過渡時間就可以了
lerp偽碼大致如下:
vec lerp(vec A,vec B,percent)
{
return A * (1.0 - percent) + B * percent;
}
所以自己算總時間,從影片開始播放時開始累加 deltaTime ,這樣就可以獲得已經播放的時間passTime ,
percent = passTime / totalTime;[/b
沒有看懂怎么操作......
uj5u.com熱心網友回復:
using UnityEngine;
public class Moving : MonoBehaviour
{
public Vector3 Begin = Vector3.zero;
public Vector3 end = Vector3.one;
public float totalTime = 1.0f;
float passTime = 0.0f;
void OnEnable()
{
passTime = 0.0f;
}
void Update()
{
passTime += Time.deltaTime;
float NormalizeTime = passTime / totalTime;
if (NormalizeTime > 1.0f)
NormalizeTime = 1.0f;
transform.position = Vector3.Lerp(Begin, end, NormalizeTime);
// The same as :
//transform.position = Begin * (1.0f - NormalizeTime) + end * NormalizeTime;
}
}
試試這個,前面三個public出去可以在面板改下值,然后隱藏重新激活這個組件就會播影片
這個應該夠說明一切了
uj5u.com熱心網友回復:
如果想控制速度可以加個速度值 在更新passTime的地方修改成
passTime += Time.deltaTime * speed;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/50525.html
標籤:Unity3D
上一篇:怎么制作隔一段時間恢復一條生命的功能
下一篇:unity滑鼠拾取問題