本文主要是介绍GDPU unity游戏开发 角色控制器与射线检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在你的生活中,你一直扮演着你的角色,别被谁控制了。
小试
1. 创建一个角色控制器,通过键盘控制角色控制器的移动,角色控制器与家具发生碰撞后,通过Debug语句打印出被碰撞物体的信息(搜索OnControllerColliderHit的使用方法)。
2. 通过屏幕射线进行碰撞检测,使得鼠标点击某个家具后,通过Debug语句打印该物体的信息。
先搭建好场景
然后以玩具小车做角色控制器
using UnityEngine;public class PlayerController : MonoBehaviour
{private CharacterController controller;float speed = 5.0f;void Start(){// 获取角色控制器组件controller = GetComponent<CharacterController>();}void Update(){// 获取键盘输入,相对全局坐标移动float hInput = Input.GetAxis("Horizontal");float vInput = Input.GetAxis("Vertical");// 计算移动方向Vector3 moveDirection = new Vector3(hInput, 0, vInput);moveDirection = transform.TransformDirection(moveDirection);//转为全局坐标// 使用角色控制器进行移动controller.Move(moveDirection * speed * Time.deltaTime);}
// // 获取角色的 Transform 组件
//Transform characterTransform = characterController.transform;将全局坐标系中的输入值转换为角色本地坐标系中的输入值
//Vector3 moveInput = new Vector3(hInput, 0, vInput);
//moveInput = characterTransform.InverseTransformDirection(moveInput);在角色的本地坐标系中应用输入值
//characterController.Move(moveInput * Time.deltaTime * moveSpeed);// 当角色控制器与其他碰撞体发生碰撞时调用void OnControllerColliderHit(ControllerColliderHit hit){// 打印被碰撞物体的信息Debug.Log("Collision with: " + hit.collider.gameObject.name);}
}
把射线检测挂载在相机上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class sctoRay : MonoBehaviour
{void Update(){// 检测鼠标左键是否被点击if (Input.GetMouseButtonDown(0)){// 发射一条射线从鼠标点击的位置Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;// 检测射线是否击中物体if (Physics.Raycast(ray, out hit)){// 获取击中物体的信息并打印GameObject hitObject = hit.collider.gameObject;//Debug.DrawLine(ray.origin, hit.point, Color.red,5);Debug.DrawRay(ray.origin, ray.direction * hit.distance, Color.red, 5);Debug.Log("Clicked on: " + hitObject.name);Debug.Log("Position: " + hitObject.transform.position);Debug.Log("Rotation: " + hitObject.transform.rotation.eulerAngles);Debug.Log("Scale: " + hitObject.transform.localScale);// 可以打印更多信息,如碰撞体、脚本组件等}}}
}
实验心得
哪家的天才少年亦为情所束缚,所以归途在哪。
这篇关于GDPU unity游戏开发 角色控制器与射线检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!