按照之前的進度製作,現在按下▶Player應該會魔性地扭動起來,但就沒有其他效果了,接下來就改造Player(切忌不要在▶狀態下改動unity所有屬性參數等…模擬遊戲一結束一切的改動基本上都會回朔)先幫Player添加一些配件鋼體跟碰撞器(Rigidbody2D 剛體讓此物件擁有一些物理特性&Collider2D 碰撞器Unity提供多種類型的碰撞器,當物件碰觸到碰撞器時可觸發任何的方法和函數) ,這遊戲用2D就可以(改用一般3D的目前應該也不會有大問題)
在Player屬性上按Add Component 可以添加一些程式.配件.功能等
剛體會有重力,會自然的下墜,Rigidbody2D ->有一個Gravity Scale調成0
Collider2D->Edit Collider改變碰撞器的大小
接下來就寫一下Player左右移動的程式,一樣在Player屬性上按Add Component,上面的搜尋條輸入你要的程式名稱直接按New Script可以直接新增,會確認名稱是否有錯誤的輸入(不可空白.奇怪的符號等...)可以的名稱後按Create and Add就會出現你新增的程式(暫定名:PlayerControl)
對PlayerControl程式點兩下會開啟Visual Studio
以下就是左右移動的基礎程式
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerControl : MonoBehaviour
{
//設定一個rig(名稱)是Rigidbody2D的屬性
private Rigidbody2D rig;
//unity屬性上會顯示一個speed(名稱)初始設定為值為5
[SerializeField]float speed = 5f;
//設定一個float(有小數的數值)來放移動數值的變數用
float horizontalMove;
//程式一開始就執行
private void Start()
{
//rig的數值從unity的Rigidbody2D取得(前面添加的Rigidbody2D)
rig = GetComponent<Rigidbody2D>();
}
//一直持續執行
private void Update()
{
// horizontalMove的值從unity設定水平移動的數值
//( Input.GetAxisRaw("Horizontal")為按下AD或左右傳入-1~1的數值出來)
horizontalMove = Input.GetAxisRaw("Horizontal");
}
//每個物理幀執行一次
private void FixedUpdate()
{
Move();
}
//設定一個叫Move的函數
void Move()
{
//一開始設定的rig取velocity速度會等於一個新的new Vector2二維向量(X,Y) X軸改為剛剛輸入的horizontalMove乘以speed,Y軸維持原來的設定.
rig.velocity =
new Vector2(horizontalMove * speed, rig.velocity.y);
}
}
不知道發文的程式碼部分能用MarkDown的三個單引號標記為程式碼嗎?
留言是可以的
會保留縮排,可讀性比較高
'縮排測試
A = 1
B = 2
另外
1.您應該是想說物理幀對吧,我之前也以為念ㄓㄣ(貞),查了一下才知道念ㄓㄥˋ(正)。
2.移動或許數值 → 些許數值。
再次感謝大大抽空寫文
謝謝