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

时间: 2024-12-25 03:18:47

unity3d-小案例之角色简单漫游的相关文章

小案例之随机点名系统

随机点名系统 近日,本人学习了对象和计时器,就想写一个小案例随机点名系统,这个小案例其实很简单只需要生成随机下标,从数组中取值并运用innerHTML方法将获取到的信息显示到网页上(这里有人会提出疑问,字符串也可以遍历为什么不用字符串呢?原因很简单字符串无法分隔每个名字.)话不多说直接上代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></ti

Session小案例-----简单购物车的使用

Session小案例-----简单购物车的使用 同上篇一样,这里的处理请求和页面显示同样用的都是servlet. 功能实现如下: 1,显示网站的所有商品 2,用户点击购买后,能够记住用户选择的商品 3,实现了多个会话共享一个session 4, 实现了浏览器禁用cookie后数据共享问题的处理 首页: package cn.itcast.shopping; import java.io.IOException; import java.io.PrintWriter; import java.io

几个数据库的小案例(二):极其简单的省市联动

总用有两个文件(frmMain.cs SqlHelper.cs) //frmMain.cs//作者:Meusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace 省市联动

Thinkphp 生成订单号小案例

Thinkphp 生成订单号小案例小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢思梦PHP就带领大家去解读一下生成订单号的问题!首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性 3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复.况且满足这些条件的同时订单号还要足够的短.不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程

【转】Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)

本篇文章主要介绍了"Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)",主要涉及到Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)方面的内容,对于Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)感兴趣的同学可以参考一下. 持久化简单的数据储存在Unity3D 中提供了一个简单有效的方法,如果之前的你做过Android的开发你会发现在Unity3D中持久化数据的储存和Android非常的想象.那么下面MOMO 将用一

css小案例:导航栏特效

css小案例:导航栏特效,实现如下图所示效果: 首先可以将html代码写出: 1 <nav class="cl-effect-1"> 2 <a href="#">Umbrella</a> 3 <a href="#">Ineffable</a> 4 <a href="#">Lilt</a> 5 <a href="#"&g

android闹钟小案例之知识点总结

上一篇文章对近期做的小闹钟做了功能阐述,现在来总结下整个开发过程中所用到的一些知识点: 1.TimePicker的监听 TimePicker控件是整个应用的核心,其它的操作都得基于对该控件的正确操控.对该控件的操作重要就是为其设置监听器,在监听事件中获取用户设置的时间. private Calendar calendar=Calendar.getInstance();//创建calendar对象 private class OnTimeChangedListenerImpl implements

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的好用,今天我们为了博客的保质保量,也就不分开写,我们直接拿比较火的Gson和Fast-json来使用,末尾在进行一些分析 Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 一.各有千秋 两大解析库的东家都是巨头,一个来自于Google官方,一个来自阿里巴巴,我们这

java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例

package org.rui.io.xml; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.List; import nu.xom.Document; import nu.