Unity 2D 實作磁鐵吸引功能
分類
建立時間: 2023年4月20日 01:16
更新時間: 2023年7月15日 12:44
說明
相信大家在玩遊戲時,有時候會看到玩家在撿東西時,例如:金幣,金幣會主動往玩家身上靠近,這裡我將分享這個功能的腳本給大家,實作原理並不困難。
腳本
Effect.cs
using UnityEngine;
/// <summary>
/// 效果類別
/// </summary>
public class Effect : MonoBehaviour
{
private GameObject player;
private Rigidbody2D myRigidbody2D;
private Vector2 direction;
/// <summary>
/// 是否啟動吸引力
/// </summary>
public static bool ActiveAttraction
{
get;
set;
} = false;
// Start is called before the first frame update
void Start()
{
player = GameObject.Find("Player");
myRigidbody2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
if (ActiveAttraction)
{
Attract();
}
}
/// <summary>
/// 吸引效果物件
/// </summary>
private void Attract()
{
direction = (player.transform.position - transform.position).normalized;
myRigidbody2D.velocity = direction * 4f;
}
}
這是一個我在遊戲中的 Effect 腳本簡化後的程式,只要將 Effect 腳本加在遊戲物件上,並且加上 Rigidbody 2D,然後 Rigidbody 2D 的 Gravity Scale 設定為0,使其不會掉落。
只要將 ActiveAttraction
設為 true,它就會慢慢靠近玩家,為了方便測試,你可以在 Start()
將 ActiveAttraction
設為 true。
以下是腳本的說明
- 首先你不會有
Player
遊戲物件,這是我的遊戲中的物件,你需要將它改成你的遊戲中的物件,或暫時建立一個簡易的立方體遊戲物件,名稱取名 Player 作為測試 - 因為我主要是要說明吸引的程式,所以這裡沒有處理碰撞功能
- 在
Attract()
中可以看到計算direction
的公式,這個公式就是取得此物件往玩家的方向向量 - 向量有方向和大小,
normalized
就是將向量大小設為1個單位 - 這裡我使用
myRigidbody2D.velocity
讓它以等速移動,你可以任意將其更改為其他的運動方式
以上就是一個簡易的吸引功能。
觀看次數: 1165
attractattractionmagnetunity吸引磁鐵
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!