unity3d之角色的移动篇 -- 俯视视角下的鼠标移动

类似DOTA游戏的移动方法, 其余没什么好说的了。

using UnityEngine;
using System.Collections;

public class gogogogo : MonoBehaviour {

    public float moveSpeed;
    public Vector3 newPosition;
    public CharacterController charactercontroller;

    //public AnimationClip idle;
    //public AnimationClip run;

    // Use this for initialization
    void Start () {
        newPosition = transform.position;
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButton (0)) {
            locateposition ();
        }
        MoveToPosition ();
    }

    //一个获取点击鼠标点击位置的方法
    void locateposition(){
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);

        if (Physics.Raycast (ray, out hit, 1000)) {
            if(hit.collider.tag != "Player"){
                newPosition = new Vector3(hit.point.x,hit.point.y,hit.point.z);
            }
        }
    }

    //一个开始移动并且旋转的方法
    void MoveToPosition(){
        if(Vector3.Distance(transform.position,newPosition) > 2){
            //旋转
            Quaternion newRotation = Quaternion.LookRotation (newPosition - transform.position, Vector3.forward);
            newRotation.x = 0f;
            newRotation.z = 0f;
            transform.rotation = Quaternion.Slerp (transform.rotation, newRotation, Time.deltaTime*20);
            //移动
            charactercontroller.SimpleMove (transform.forward * moveSpeed);

            //animation.CrossFade(run.name);
        }
        else
        {
            //animation.CrossFade(idle.name);
        }
    }
}
时间: 2024-10-26 19:38:48

unity3d之角色的移动篇 -- 俯视视角下的鼠标移动的相关文章

unity3d之角色的移动篇 -- 俯视视角下的键盘移动番外篇

这是一个来自unity官网实例的行走脚本,经过我的简单整理后发布在这里,写的非常好,条理分明,一目了然,运行起来很有操作手感. 这个脚本是在animator系统下运行的,所以在写这个脚本前需要先对animator controller进行一些简单的设置: 1. idle状态(默认)和run状态(blend tree,混合了walk和run) 2.定义一个float类型的参数,idle->run(speed>0.1), run->idle(speed<0.1) 3.在run的blen

unity3d之角色的移动篇 -- 追尾视角下的键盘移动

所谓追尾就是只能看到角色的背部,比较典型的有刺客型条,真三国无双一类. 本功能是在aniamtor系统下完成的,在完成这个行走效果需要先准备以下几个步骤:1.拖入idle动作和blend tree,blend tree下混合左跑,直线跑,右跑3个动作. 2.定义一个float类型的变量Speed作为动作的切换条件: idle ->blend tree(speed>0.1), blend tree -> idle (speed<0.1) 3.为混合树的3个动作设置一个float类型的

unity3d之角色的移动篇 -- 45&#176;视角下的键盘移动

这个知识点我想分成几个章节来写,分别记录不同情况下不同的移动方式. 首先是在45度角摄像机下的键盘控制角色移动(如下图), 先写一个最简单的移动脚本吧(这个脚本也可以用于平常的小测试) 在这之前先得为角色挂上character controller组件,然后获取它. void move(){ //首先获取横纵轴的方向 float h = Input.GetAxis ("Horizontal"); float v = Input.GetAxis("Vertical")

[Unity3D]Unity3D游戏开发之自由视角下的角色控制

在开始今天的内容前,首先让我们来学习下Unity3D中较为重要的一部分知识,理解这些知识是我们开始学习今天内容的基础. 1.Input.GetAxis():该方法用于在Unity3D中根据坐标轴名称返回虚拟坐标系中的值,通常情况下,使用控制器和键盘输入时此值范围在-1到1之间.这段话怎么理解呢?我们来看下面这段脚本: [csharp] view plaincopyprint? using UnityEngine; using System.Collections; public class ex

unity商店demo学习:俯视视角RPG游戏

一下所有素材和源码都来自unity商店的实例 Top-Down RPG Starter Kit ,这个demo是unity商店上最好的入门级rpg游戏实例,麻雀虽小,五脏俱全,想要弄清楚一个标准的rpg游戏的方方面面,这个是很好的选择. ps:demo写得很高深,看得不是很懂,准备慢慢研究. 来一张工程全貌图. 这是一个俯视视角(可以调整视角)的卡通风格3D角色扮演游戏,配着动听又欢快的背景音乐,还有那萌萌哒的怪物,仿佛又回到了初中时玩冒险岛online的时候~~,额,不废话,主要模块如下: 游

Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板

在上篇文章 Unity3D热更新之LuaFramework篇[01]--从零开始 中,我们了解了怎么获得一个可用的LuaFramework框架. 本篇将我会先介绍一下如何配置Lua开发环境,然后分析在此框架中加载面板的流程,以及如何创建自己的面板. 1.配置Lua开发环境 有一点要说明的是,使用此种方式(ToLua+LuaFramework)做热更新,则意味着你的大部分逻辑都需要改用Lua语言来编写. 因此,开发前得先得配置好Lua开发环境.毕竟,工欲善其事,必先利其器. 环境配置大概分以下三个

Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一.规范开发模式 此前的示例中,动态加载的panel都默认以GuiCamera为父节点,且面板的大小设置得有些随意,为方便后续开发,现做一些调整和规范. 1.设定本项目的开发分辨率为1334x750(Game视图分辨率也设置为这个大小): 2.调整相机,将原有的GuiCamera从Canvas下拖离出来

Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此事.本篇文章就来继续这个工作. 从Lua中调用C#代码 1.创建UI监听脚本 打开之前的工程,在Assets/LuaFrameworks/Scripts/Common下,创建一个UIEventEx.cs脚本,将LuaBehaviour.cs中的AddButtonClick以及AddInputFiel

[再寄小读者之数学篇](2014-06-20 积分号下求导)

设 $f\in C(-\infty,+\infty)$, 定义 $\dps{F(x)=\int_a^b f(x+t)\cos t\rd t}$, $a\leq x\leq b$. (1) 证明: $F$ 在 $[a,b]$ 上可导; (2) 计算 $F'(x)$. 解答: 由 $$\bex F(x)=\int_{x+a}^{x+b} f(s)\cos (s-x)\rd t \eex$$ 即知 $$\beex \bea F'(x)&=\int_{x+a}^{x+b} f(s)\sin (s-x)\