unity3d-小案例之角色简单漫游

准备资源

我这里从网上下载一个角色模型,里面有一组动画。有站立、奔跑、杀怪等

我们来实现角色的前后左后移动,即键盘上的WSDA键,这里因为没有行走的动画。索性就用奔跑代替了!!

暂时先不计较代码冗余的情况。因为我也是刚学习的新手。一切为了先实现效果。

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class modelMove : MonoBehaviour
 5 {
 6 
 7     public float speed = 2;
 8     // Use this for initialization
 9     void Start()
10     {
11 
12     }
13 
14     // Update is called once per frame
15     void Update()
16     {
17 
18         //保存移动前位置
19         Vector3 oldPosition = transform.position;
20         if (Input.GetKey(KeyCode.W))
21         {
22             transform.Translate(Vector3.forward * Time.deltaTime * speed, Space.World);
23             animation.Play("run");//开始奔跑
24 
25         }
26         if (Input.GetKey(KeyCode.S))
27         {
28             transform.Translate(Vector3.back * Time.deltaTime * speed, Space.World);
29             animation.Play("run");//开始奔跑
30 
31         }
32         if (Input.GetKey(KeyCode.A))
33         {
34             transform.Translate(Vector3.left * Time.deltaTime * speed, Space.World);
35             animation.Play("run");//开始奔跑
36 
37         }
38         if (Input.GetKey(KeyCode.D))
39         {
40             transform.Translate(Vector3.right * Time.deltaTime * speed, Space.World);
41             animation.Play("run");//开始奔跑
42 
43         }
44 
45 
46         //设置角色方向
47         /*
48          * LookAt(Vector3 worldPosition);
49          * 手册上的解释:旋转物体,这个向前向量指向target的当前位置。
50 
51          * 我是这样理解的:
52            假设:
53          * 移动前的向量为 v1
54          * 移动后的向量为 v2
55          * 那么当前目标物体就会旋转指向v2-v1的方向向量
56          * LookAt()方法。要使用世界坐标系 Space.World
57          * transform.position - oldPosition :移动前的方向-移动后的方向=目标向量
58          * transform.position + transform.position - oldPosition :在当前位置转向
59          */
60         transform.LookAt(transform.position + transform.position - oldPosition);
61     }
62 }

 

看到这里是不是发现。角色跑远后,越来越小了。因为这里角色在跑。摄像机并没有跟着跑动。那怎么办?
这里要让摄像机跟着角色移动,实现漫游的效果,这里很简单。只需要把camera拖到角色对象中。作为角色的子对象即可
这样一比较效果是不是很明显了
在上面的代码中。我们提到了LookAt方法。那它究竟是一个什么样的方法呢。上面的代码也有解释,如果还不懂。我们来对比下。
当移动角色。没有使用LookAt方法就是什么样的效果,看下图中。左边角色是使用了LookAt,右边角色是没有使用
理解这句话:LookAt是使:旋转物体,这个向前向量指向target的当前位置(来自手册的解释)
刚接触unity3d不久。但我已经深深的被他所吸引了。加油。我一定要成为Game Boy
本节资源模型下载

http://pan.baidu.com/s/1ARiBO 密钥:uqs8

转载于:https://www.cnblogs.com/niboy/p/4211549.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PopupWindow在项目中的使用 并指定位置及加入动画效果

2019独角兽企业重金招聘Python工程师标准>>> 项目做到一期收尾阶段,突然要用到弹出窗口,于是自然而然的就想起了PopupWindow这个组件了,才发现平时用的少,对这个组件几乎是完全无知的状态啊。 于是恶补一番 现在放出学…

PHP新浪乐居面试题,一个朋友去新浪乐居面试时的面试题(PHP)

以下是他回忆当时的笔试题一、1、有如下HTML:1)用js取得________方法取得该对象;2)用________属性取得属性title的属性值;3)用________方法取得属性sina_title的属性值;2、php中对数组序列化和反序列化的函数分别是______和______…

Nodejs从小工到专家系列(一)

前言 从小工到专家系列为从头开始学习Nodejs,但它并不是教程,我会整理一些应该特别注意或深入理解的知识点,当然也会涉及常用的库,比如Express,mongoose,bluebird.. Nodejs特点: 单线程 优点: 没有死锁存在没有线程上下文交换所产生的性能开销缺点: 无法利用多核错误会引起整个…

php 图片无法删除,php如何删除上传的图片

php删除上传的图片的方法:首先检查上传文件是否在允许上传的类型;然后获取图片的完整路径;最后通过“unlink(“uppic/”.$img);”方法删除图片即可。简单的PHP上传图片和删除图片示例代码分享一例简单的PHP上传图片和删除图片示例代码&#x…

textbox 和textera 文本框多行后不能拉伸

加一个样式 "style "resize:none"转载于:https://www.cnblogs.com/q101301/p/4213298.html

Linux中断(interrupt)子系统之五:软件中断(softIRQ)

转自:http://blog.csdn.net/droidphone/article/details/7518428 软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普…

php 克隆对象,php中对象的复制与克隆

* 对象的复制与克隆* 1.默认情况下,对象是引用传递(实际上是对象标识符的复制,后面会详细说)* 2.也就是说二个对象变量实际上是引用的是同一个对象* 3.如果要创建一个新的对象,必须使用clone关键字来克隆当前对象* 4.当使用clone关键字时,如果类中有__clone()会自动调用* 5.__c…

贝克汉姆-囚

转载于:https://www.cnblogs.com/andyxl/p/4215954.html

Androida规划nt打包

1.准备工作 (1)首先安装好ant工具 (2)生成keystore 在jdk的bin文件夹下 输入keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore 按操作输入就可以,记住password。 &am…

php5.3+for+linux,Centos 安装 nginx + php5.3

Centos 安装 nginx php5.3,点开查看详情。 #查看系统版本信息cat /etc/issue uname -a#设置时区 rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime#使用ntpdate同步时间 yum install -y ntp ntpdate -u pool.ntp.org date#Centos 安…

PHP Uploadify+jQuery.imgAreaSelect插件+AJAX 实现图片上传裁剪 仿微博头像上传功能

http://blog.csdn.net/as66t/article/details/11688217 http://blog.mc-zone.me/article/226#comment-2991转载于:https://www.cnblogs.com/ymj0906/p/4221967.html

[树结构]平衡二叉树AVL

平衡二叉树是一种二叉排序树,其中每一个节点的左子树和右子树的高度至多等于1,平衡二叉树又称为AVL树。 将二叉树节点的左子树深度减去右子树深度的值称为平衡因子BF,平衡二叉树上所有节点的平衡因子只可能是-1,0或者1。 距离插入点最近的&am…

dedecms php5.4 无法退出后台,PHP5.4版本织梦dedecms后台退出空白的解决方法

你是否遇到过PHP5.4版本织梦dedecms后台退出空白的问题,有没有解决呢?没有解决思绪,就来看看我这篇文章吧。解决办法:打开include/userlogin.class.php找到:function exitUser(){ClearMyAddon();session_unregister($this->ke…

C++构造函数/析构函数 设置成private的原因

C构造函数/析构函数 设置成private的原因 标签(空格分隔): c/c 将构造函数,析构函数声明为私有和保护的,那么对象如何创建? 已经不能从外部调用构造函数了,但是对象必须被构造,应该如…

R语言学习笔记(4)

第四章&#xff1a;基本数据管理 一 贯穿整章的示例 二 变量的创建、重编码和重命名 三 日期值与缺失值 四 数据类型和类型转换 五 数据集的排序、合并与取子集 一 贯穿整章的示例&#xff08;leadership&#xff09; 代码4-1 1 > manager<-c(1,2,3,4,5)2 > date<…

php substr_replace 中文乱码,php substr_replace替换字符串一些实例_PHP教程

substr_replace与str_replace有一点像就是直接把字符串替换一部份了&#xff0c;下面小编来给各位同学介绍一下操作方法。substr_replace() 函数把字符串的一部分替换为另一个字符串。用法substr_replace(string,replacement,start,length)注意当字符串包含中文时&#xff0c;不…

发布《Linux工具快速教程》

发布《Linux工具快速教程》 阶段性的完成了这本书开源书籍&#xff0c;发布出来给有需要的朋友&#xff0c;同时也欢迎更多的朋友加入进来&#xff0c;完善这本书&#xff1b; 本书Github地址&#xff1a;https://github.com/me115/linuxtools_rst 在线阅读 缘起 Linux下有很多…

java6:流程控制

Java 流程控制&#xff1a;顺序分支循环分支&#xff1a;if(布尔表达式){语句块}else{语句块}尽量使用肯定条件&#xff0c;减少else&#xff0c;减少嵌套package day06; import java.util.Scanner; public class Demo01 {public static void main(String[] args) {Scanner con…

linux 部署php svn,Linux服务器搭建svn环境方法详解

下面由Linux教程栏目给大家介绍Linux服务器搭建svn环境的方法&#xff0c;希望对需要的朋友也是帮助&#xff01;1、安装svn服务端sudo apt-get install subversion2、安装svn在ubuntu的本地客户端sudo apt-get install libapache2-svn3、在根目录home下面建一个文件夹svn&…

pfsense 2.2RC版本应用

为什么要上RC版本呢&#xff1f;因为华硕主板有一个RTL8111G驱动在2.15中还没有识别。。。。 公司双线WAN&#xff0c;一个PPPOE一个静态IP。 开了端口转发&#xff0c; 要求对不同的IP进行相关限速&#xff0c; 到达指定网站用固定IP&#xff0c; 两根线带宽均衡使用。 相关设…