B1. Tại thẻ Project, nhấp chuột chọn Evil Cube, qua thẻ Inspector, bỏ dấu stick ở file Enemy AI (Script).
B2. Vẫn đang chọn Evil Cube, tại thẻ Inspector, nhấp vào nút Untagged và chọn Add Tag và gõ vào Element 0 từ Enemy. Nhấp chuột chọn lại Evil Cube và chọn Tag là Enemy
B3. Tại thẻ Hierarchy, nhấp chọn Evil Cube và ấn Ctrl + D 2 lần để tạo ra thêm 2 Evil Cube giống như lúc đầu. Đổi tên 3 Evil Cube này lại thành Evil Cubie 1, Evil Cubie 2 và Evil Cubie 3.
B4.Nhấp phải vào thư mục Script và chọn Creat | C# Script và đặt tên file là Targetting.
B5. Double click vào file C# vừa tạo và chèn đoạn code sau vào:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Targetting : MonoBehaviour {
public List<Transform> targets;
public Transform selectedTarget;
private Transform myTransform;
// Use this for initialization
void Start () {
targets = new List<Transform>();
selectedTarget = null;
myTransform = transform;
AddAllEnemies();
}
public void AddAllEnemies(){
GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
foreach(GameObject enemy in go)
AddTarget(enemy.transform);
}
public void AddTarget(Transform enemy){
targets.Add (enemy);
}
private void SortTargetsByDistance(){
targets.Sort(delegate(Transform t1, Transform t2){
return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
});
}
private void TargetEnemy(){
if(selectedTarget == null){
SortTargetsByDistance();
selectedTarget = targets[0];
}
else{
int index = targets.IndexOf (selectedTarget);
if(index < targets.Count - 1){
index++;
}
else{
index = 0;
}
DeselectTarget();
selectedTarget = targets[index];
}
SelectTarget();
}
private void DeselectTarget(){
selectedTarget.renderer.material.color = Color.blue;
selectedTarget = null;
}
private void SelectTarget(){
selectedTarget.renderer.material.color = Color.red;
PlayerAttack pa = (PlayerAttack)GetComponent("PlayerAttack");
pa.target = selectedTarget.gameObject;
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.Tab)){
TargetEnemy();
}
}
}
B6. Kéo thả file C# vừa tạo ở bước trên vào Player ở thẻ Hierarchy.
B7. Sử dụng công cụ Tranform tool và di chuyển 3 Evil Cubie ra 3 nơi khác nhau như sau:
B8. Nhấn nút Play để kiểm tra thành quả. Trong khi chơi, bạn có thể ấn Tab để chọn mục tiêu (màu đỏ) mới có thể tấn công được.
This comment has been removed by the author.
ReplyDeleteMissingComponentException: There is no 'Renderer' attached to the "Enermy1" game object, but a script is trying to access it.
ReplyDeleteYou probably need to add a Renderer to the game object "Enermy1". Or your script needs to check if the component is attached before using it.
Lỗi này là sao vậy bạn , giúp mình với