資源簡介
海底魚類隨機點游動,轉向很柔和,比較真實,可以采納
代碼片段和文件信息
using?UnityEngine;
using?System.Collections;
//普通魚的位移控制腳本
public?class?fishMove?:?MonoBehaviour
{
????//魚當前運動的目標點
????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()
????{
????????//設定動畫速度為1.5倍
????????if?(_animation[“Motion“])
????????{
????????????_animation[“Motion“].speed?=?1.5f;
????????}
????????//開始循環調用?生成隨即目標點函數?延遲0秒?每隔4~6秒再次再次調用
????????InvokeRepeating(“RandPoint“?0?Random.Range(4?6));
????}
????//?Update?is?called?once?per?frame
????void?Update()
????{
????????time1?-=?Time.deltaTime;
????????MovetoPoint(Point);
????}
????//隨機產生目標點
????public?void?RandPoint()
????{
????????//隨機范圍控制
????????Point.x?=?Random.Range(-700f?700f);
????????Point.y?=?Random.Range(-20f?200f);
????????Point.z?=?Random.Range(-700f?700f);
????}
????//移動函數
????void?MovetoPoint(Vector3?Pos)
????{
????????//face表示魚目標朝向,朝向由魚當前朝向與速度方向差值獲得
????????Vector3?face?=?Vector3.MoveTowards(transform.forward?+?transform.position?_rig.velocity?+?transform.position?0.5f);
????????//給魚一個向目標點的力,為防止魚轉向時位移過大,力的大小要乘上朝向與速度方向的夾角的補角
????????_rig.AddForce((Pos?-?transform.position).normalized?*?
評論
共有 條評論