IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 3D拾取技术、角色控制器、Animation动画系统 -> 正文阅读

[游戏开发]3D拾取技术、角色控制器、Animation动画系统

请添加图片描述


一、射线


要想在游戏中发射一条射线,必须要有两个元素,一个起始点,一个方向。
Ray.origin:射线起点
Ray.direction:射线的方向
创建一条射线的方法: Ray (origin : Vector3, direction : Vector3)
Origin是射线的起点,direction是射线的方向

//两个参数分别是起点和终点
Debug.DrawLine(transform.position, transform.position + transform.forward, Color.red);注意:只能在Scene视图中才可以看到
//两个参数分别是起点和方向
Debug.DrawRay(transform.position, transform.forward, Color.green);//注意:只能在Scene视图中才可以看到

从原点发射一条射线

void Update () 
       {
              //定义一条射线,起点为Vector3.zero,终点为物体坐标
              Ray ray=new Ray(Vector3.zero,transform.position);//沿起始方向创建射线  public Ray(Vector3 origin, Vector3 direction);
             //定义一个光线投射碰撞
              RaycastHit hit;             
              Physics.Raycast(ray,out hit,100); //发射射线长度为100 //public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance, int layerMask);
    		//起点为射线的起点,终点为射线与物体的碰撞点
              Debug.DrawLine(ray.origin,hit.point); 
              //hit:它是用于存储射线碰撞到的第一个物体的信息(位置、方向等)
       }

点击鼠标左键克隆游戏对象

if (Input.GetMouseButtonDown(0))
 		{
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机上发射一条射线到鼠标所点击的位置
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                   Instantiate(cube,hit.point,Quaternion.identity);//cube:克隆对象、hit.point:克隆的位置、Quaternion.identity:不旋转
            }
  		}

二、角色控制器


第一人称:在第一人称视角游戏中,整个游戏视图好比主角的眼睛,游戏画面中的一切好像是从自己眼睛看到的一样

第三人称:游戏场景中包含主角对象和摄像机对象,主角移动后,摄像机永远跟着主角移动,所以在Game视图中可以看出主角当前的移动方向

属性面板
在这里插入图片描述
角色控制器的应用

通过键盘控制角色的移动
1.为角色添加CharacterController
在这里插入图片描述

2.通过调用SimpleMove()使角色移动

public class Player : MonoBehaviour {
	CharacterController cc;
	float speed = 100f;
	void Start () {
		cc = GetComponent<CharacterController>();
	}
	void Update () {
		float h = Input.GetAxis("Horizontal")*Time.deltaTime*speed;
		float v = Input.GetAxis("Vertical") * Time.deltaTime * speed;
		cc.SimpleMove(new Vector3(h,0,v));
	}
}

		cc.SimpleMove(new Vector3(h, 0, v));//平面移动,自带碰撞器和重力
		//cc.Move(new Vector3(h, 0, v));//空中飞行,没有重力,自带碰撞器

三、Animition动画系统
导入角色资源包:Player.unitypackage
在这里插入图片描述

1.2 动画制作

1、更改所有动画类型为Legacy
在这里插入图片描述

2、把Idle动画设置循环播放
在这里插入图片描述

3、为角色添加多个动画
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
*文件描述:
*创始人:
*创建时间:
*修改时间:
*版本:1.0
*/
public class Player : MonoBehaviour {
	CharacterController cc;//定义一个角色控制器
	Animation an;
	public float speed;
	void Start () {
		cc = GetComponent<CharacterController>();//获取角色控制器
		an = GetComponent<Animation>();

	}
	
	void Update () {
		float h = Input.GetAxis("Horizontal")*Time.deltaTime*speed;
		float v =Input.GetAxis("Vertical")*Time.deltaTime*speed;
		
        //起跳
        if (Input.GetKeyDown(KeyCode.Space))
        {
			transform.position += Vector3.up;
        }
        //cc.Move(new Vector3(h,0,v));
        if (h!=0||v!=0)//移动时播放动画
        {
			cc.SimpleMove(new Vector3(h, 0, v));//控制移动
			an.Play("walk");
        }
        else
        {
			an.Play("stand");
        }
	}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:10:11  更:2021-11-26 09:11:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:56:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码