程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Targetting

Targetting

編輯:C#入門知識

[csharp] 
using UnityEngine; 
using System.Collections; 
using System.Collections.Generic;   // which include 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(); 
    } 
     
    // Get a list of enemies 
    public void AddAllEnemies () { 
        GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy"); 
         
        foreach(GameObject enemy in go) 
            AddTarget(enemy.transform); 
    } 
     
    public void AddTarget(Transform enemy) { 
        targets.Add(enemy); 
    } 
     
    // Sort by distance in descending order 
    private void SortTargetsByDistance () { 
        targets.Sort(delegate(Transform t1, Transform t2) { 
                    return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));           
                }); 
    } 
     
    // Some sets 
    private void TargetEnemy () { 
        if (selectedTarget == null) { 
            SortTargetsByDistance(); 
            selectedTarget = targets[0]; 
        } 
        else { 
        // Loop switcher in List<Transform> targets 
            int index = targets.IndexOf(selectedTarget); 
             
            if (index < targets.Count - 1) 
                index++; 
            else 
                index = 0; 
             
            DselectTarget(); 
            selectedTarget = targets[index];     
        } 
        SelectTarget(); 
    } 
     
    // Render the selectedTarget 
    private void SelectTarget () { 
        selectedTarget.renderer.material.color = Color.red; 
    } 
 
    private void DselectTarget () { 
        selectedTarget.renderer.material.color = Color.blue; 
    } 
     
    // Update is called once per frame 
    void Update () { 
        if (Input.GetKeyDown(KeyCode.Tab)) { 
            TargetEnemy(); 
        } 
    } 

作者:janpylx

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved