資源簡(jiǎn)介
海底魚(yú)類(lèi)隨機(jī)點(diǎn)游動(dòng),轉(zhuǎn)向很柔和,比較真實(shí),可以采納
代碼片段和文件信息
using?UnityEngine;
using?System.Collections;
//普通魚(yú)的位移控制腳本
public?class?fishMove?:?MonoBehaviour
{
????//魚(yú)當(dāng)前運(yùn)動(dòng)的目標(biāo)點(diǎn)
????public?Vector3?Point;
????public?Gameobject?player;//??人物
????public?float?time1?=?2f;
????Rigidbody?_rig;
????Animation?_animation;
????void?Awake()
????{
????????Point?=?new?Vector3();
????????_rig?=?GetComponentInChildren();
????????_animation?=?GetComponent();
????}
????void?Start()
????{
????????//設(shè)定動(dòng)畫(huà)速度為1.5倍
????????if?(_animation[“Motion“])
????????{
????????????_animation[“Motion“].speed?=?1.5f;
????????}
????????//開(kāi)始循環(huán)調(diào)用?生成隨即目標(biāo)點(diǎn)函數(shù)?延遲0秒?每隔4~6秒再次再次調(diào)用
????????InvokeRepeating(“RandPoint“?0?Random.Range(4?6));
????}
????//?Update?is?called?once?per?frame
????void?Update()
????{
????????time1?-=?Time.deltaTime;
????????MovetoPoint(Point);
????}
????//隨機(jī)產(chǎn)生目標(biāo)點(diǎn)
????public?void?RandPoint()
????{
????????//隨機(jī)范圍控制
????????Point.x?=?Random.Range(-700f?700f);
????????Point.y?=?Random.Range(-20f?200f);
????????Point.z?=?Random.Range(-700f?700f);
????}
????//移動(dòng)函數(shù)
????void?MovetoPoint(Vector3?Pos)
????{
????????//face表示魚(yú)目標(biāo)朝向,朝向由魚(yú)當(dāng)前朝向與速度方向差值獲得
????????Vector3?face?=?Vector3.MoveTowards(transform.forward?+?transform.position?_rig.velocity?+?transform.position?0.5f);
????????//給魚(yú)一個(gè)向目標(biāo)點(diǎn)的力,為防止魚(yú)轉(zhuǎn)向時(shí)位移過(guò)大,力的大小要乘上朝向與速度方向的夾角的補(bǔ)角
????????_rig.AddForce((Pos?-?transform.position).normalized?*?
評(píng)論
共有 條評(píng)論