15. 在Player物件加上PlayerController程式腳本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
void FixedUpdate () {
Rigidbody rigidBody = GetComponent<Rigidbody> ();
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidBody.velocity = movement;
}
}
玩家戰機移動控制 1/5
15
16. 執行測試,可使用方向鍵移動Player戰機,但是…
移動速度很慢
在PlayerController程式腳本加入速度參數
public class PlayerController : MonoBehaviour {
public float speed;
void FixedUpdate () {
Rigidbody rigidBody = GetComponent<Rigidbody> ();
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidBody.velocity = movement * speed;
}
}
玩家戰機移動控制 2/5
16
17. 將PlayerController之Speed欄設定為10
執行測試,Player戰機移動速度變快了,但是…
Player戰機會跑出螢幕
修改PlayerController程式腳本,限制Player戰機移動範圍
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class Boundary {
public float xMin, xMax, zMin, zMax;
}
玩家戰機移動控制 3/5
17
18. public class PlayerController : MonoBehaviour {
public float speed;
public float tilt;
public Boundary boundary;
void FixedUpdate () {
Rigidbody rigidBody = GetComponent<Rigidbody> ();
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidBody.velocity = movement * speed;
rigidBody.position = new Vector3 (
Mathf.Clamp (rigidBody.position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (rigidBody.position.z, boundary.zMin, boundary.zMax));
rigidBody.rotation = Quaternion.Euler (
0.0f, 0.0f, rigidBody.velocity.x * -tilt);
}
}
玩家戰機移動控制 4/5
18
23. Bolt物件加上Mover程式腳本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Mover : MonoBehaviour {
[SerializeField]
private float speed;
// Use this for initialization
void Start () {
GetComponent<Rigidbody>().velocity = transform.forward * speed;
}
}
建立玩家戰機子彈 4/5
23