简单的角色响应鼠标而移动

2024-09-09 04:18

本文主要是介绍简单的角色响应鼠标而移动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

actor类

//处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0;

using UnityEngine;
using System.Collections;


public class actor : MonoBehaviour {
public float speed=0.1f;
CharacterController cc;
// Use this for initialization
void Start () {
cc = GetComponent<CharacterController> ();
}

// Update is called once per frame
void Update () {
if (stick.camDelta == Vector3.left) 
{
return ;
}

//获取CC摄像机Y轴在世界坐标系中的投影
Vector3 WorldYDirection = Camera .main .transform .TransformDirection (Vector3.up);

//将上段代码取得的投影归一化(normalize),也就是变成单位向量
Vector3 GroundYDirection = new Vector3 (WorldYDirection .x, 0, WorldYDirection .z).normalized * stick.camDelta .y;
Vector3 WorldXDirection = Camera.main.transform .TransformDirection (Vector3.right);
Vector3 GroundXDirection = new Vector3 (WorldXDirection.x, 0, WorldXDirection.z).normalized * stick.camDelta .x;
Vector3 direction = (GroundXDirection + GroundYDirection).normalized;
Vector3 motion = direction * speed;

.//始终让CC紧贴地面
motion .y = -1000;
cc.Move (motion);
}
}


stick类

//响应鼠标的点击和移动

public class stick : MonoBehaviour {
public static Vector3 camDelta;
private Vector3 startpos;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
if (Input.GetMouseButton (0)) {
if (startpos == Vector3.left) {
startpos = Input.mousePosition;
} else {
camDelta = Input .mousePosition - startpos;
}

else if (Input.GetMouseButtonUp (0)) 
{
camDelta=Vector3.zero ;
startpos=Vector3.left ;
}

}
}

这篇关于简单的角色响应鼠标而移动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150137

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示