Unity 相机跟随/OnTrigger和List使用/控制物体移动和旋转代码下载

2015年03月21日 10:42 0 点赞 0 评论 更新于 2025-11-21 17:55

Unity 相机跟随

在Unity中实现相机跟随功能,可通过以下代码实现。该代码的核心是让相机始终朝向目标对象。

using UnityEngine;
using System.Collections;

public class look : MonoBehaviour {
public Transform target;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
transform.LookAt(target.position);
}
}

代码解释

  • public Transform target;:定义一个公共的Transform类型变量target,用于指定相机要跟随的目标对象。
  • transform.LookAt(target.position);:在每帧更新时,调用LookAt方法,使相机的前方朝向目标对象的位置。

Unity OnTrigger和List使用

下面的代码展示了如何在Unity中使用OnTrigger事件和List集合。当物体进入、停留或离开触发器时,会执行相应的操作。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Ontriggle : MonoBehaviour {
List<Color> colorlist;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}

void OnTriggerEnter(Collider other) {
colorlist = new List<Color>();
for (int i = 0; i < other.renderer.materials.Length; i++) {
colorlist.Add(other.renderer.materials[i].color);
other.renderer.materials[i].color = Color.red;
}
}

void OnTriggerStay(Collider other) {
Debug.Log("-------stay----");
}

void OnTriggerExit(Collider other) {
for (int i = 0; i < other.renderer.materials.Length; i++) {
other.renderer.materials[i].color = colorlist[i];
}
}
}

代码解释

  • List<Color> colorlist;:定义一个List<Color>类型的变量colorlist,用于存储物体材质的颜色。
  • OnTriggerEnter(Collider other):当有物体进入触发器时,创建一个新的List<Color>,并将进入触发器物体的所有材质颜色添加到列表中,同时将这些材质的颜色设置为红色。
  • OnTriggerStay(Collider other):当物体停留在触发器内时,在控制台输出信息。
  • OnTriggerExit(Collider other):当物体离开触发器时,将物体的材质颜色恢复为进入触发器之前的颜色。

Unity 控制物体移动和旋转

以下代码实现了在Unity中通过键盘输入控制物体的移动和旋转。

using UnityEngine;
using System.Collections;

public class transform : MonoBehaviour {
public float speed;
public float rotspeed;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.W)) {
// transform.Translate(Vector3.*Time.deltaTime*speed);
transform.Translate(Vector3.right * Time.deltaTime * speed);
} else if (Input.GetKey(KeyCode.S)) {
transform.Translate(Vector3.left * Time.deltaTime * speed);
}
if (Input.GetKey(KeyCode.A)) {
transform.Rotate(Vector3.up * Time.deltaTime * (-rotspeed));
} else if (Input.GetKey(KeyCode.D)) {
transform.Rotate(Vector3.up * Time.deltaTime * (rotspeed));
}
}
}

代码解释

  • public float speed;public float rotspeed;:定义两个公共的浮点型变量,分别用于控制物体的移动速度和旋转速度。
  • Input.GetKey(KeyCode.W)Input.GetKey(KeyCode.S)Input.GetKey(KeyCode.A)Input.GetKey(KeyCode.D):通过检测键盘输入,根据不同的按键执行相应的移动和旋转操作。
  • transform.Translate(Vector3.right * Time.deltaTime * speed);:当按下W键时,物体向右移动。
  • transform.Translate(Vector3.left * Time.deltaTime * speed);:当按下S键时,物体向左移动。
  • transform.Rotate(Vector3.up * Time.deltaTime * (-rotspeed));:当按下A键时,物体绕Y轴逆时针旋转。
  • transform.Rotate(Vector3.up * Time.deltaTime * (rotspeed));:当按下D键时,物体绕Y轴顺时针旋转。

请注意,代码中transform.Translate(Vector3.*Time.deltaTime*speed); 是错误的代码,已注释掉。在实际使用时,应确保代码的正确性。