Unity實現(xiàn)弧形移動效果
更新時間:2020年06月21日 11:04:01 作者:LLLLL__
這篇文章主要為大家詳細介紹了Unity實現(xiàn)弧形移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Unity實現(xiàn)弧形移動效果的具體代碼,供大家參考,具體內(nèi)容如下
一、實現(xiàn)效果

二、第一種實現(xiàn)方法——弧形插值
using UnityEngine;
public class ArcMove : MonoBehaviour
{
public GameObject curGo;//當前物體
public GameObject targetGo;//目標物體
public float value;
private void Update()
{
//計算中心點
Vector3 center = (curGo.transform.position + targetGo.transform.position) / 2;
center -= new Vector3(0, value, 0);
Vector3 start = curGo.transform.position - center;
Vector3 end = targetGo.transform.position - center;
//弧形插值
curGo.transform.position = Vector3.Slerp(start, end, Time.time / 200);
curGo.transform.position += center;
//判定是否到達目標點
float dis = Vector3.Distance(curGo.transform.position, targetGo.transform.position);
if (dis <= 1)
{
Debug.Log("到達目標點");
}
}
}
三、第二種實現(xiàn)方法——計算弧線中的夾角
using UnityEngine;
using System.Collections;
public class ArcMove : MonoBehaviour
{
public GameObject curGo;//當前物體
public GameObject targetGo;//目標物體
public float speed = 2;//速度
public int rotationAngle = 60;//旋轉(zhuǎn)的角度
private float distanceToTarget;//兩者之間的距離
private bool move = true;//是否移動
void Start()
{
//計算兩者之間的距離
distanceToTarget = Vector3.Distance(curGo.transform.position, targetGo.transform.position);
StartCoroutine(Move());
}
/// <summary>
/// 移動
/// </summary>
private IEnumerator Move()
{
//移動到目標點停止移動
while (move)
{
Vector3 targetPos = targetGo.transform.position;
targetPos.z = 0;
//讓它始終朝著目標
curGo.transform.LookAt(targetPos);
//計算弧線中的夾角
float angle = Mathf.Min(1, Vector3.Distance(curGo.transform.position, targetPos) / distanceToTarget) * rotationAngle;
curGo.transform.rotation = curGo.transform.rotation * Quaternion.Euler(Mathf.Clamp(-angle, -42, 42), 0, 0);
float currentDist = Vector3.Distance(curGo.transform.position, targetGo.transform.position);
if (currentDist < 0.5f)
{
move = false;
Debug.Log("到達目標點");
}
curGo.transform.Translate(Vector3.forward * Mathf.Min(speed * Time.deltaTime, currentDist));
yield return null;
}
}
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#使用Socket實現(xiàn)發(fā)送和接收圖片的方法
這篇文章主要介紹了C#使用Socket實現(xiàn)發(fā)送和接收圖片的方法,涉及C#操作socket發(fā)送與接收文件的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
C#實現(xiàn)提取Word中插入的多媒體文件(視頻,音頻)
在Word中可將文件通過OLE對象嵌入的方式插入到文檔,包括Word、excel、PDF、PPT、圖片、宏文件、文件包等在內(nèi)的多種文件類型。本文將利用C#實現(xiàn)提取插入在Word文件中的這些多媒體文件,感興趣的可以了解一下2022-02-02
c#遍歷System.drawing.Color下面的所有顏色以及名稱以查看
c#遍歷System.drawing.Color下面的所有顏色以及名稱以查看,需要的朋友可以參考一下2013-02-02

