U3D 小球跟随鼠标在地上滚动(一)

新建一个plane作为地面Land,一个小球。给小球增加Rigidbody组件,设置一个阻力值Drag,此处我们设为1。

然后给小球增加一个script,此处为moveController.cs

using UnityEngine;
using System.Collections;

public class moveController : MonoBehaviour {

	public float speed;	//	小球运动速度
	
	Vector3 targetPos;	//	目标位置
	
	void Awake () {
		targetPos = transform.position;
	}
	
	void Update () {
		GetTargetPos ();
		//	判断小球有没有到达目标点
		if (Vector3.Distance (targetPos, transform.position) >= 0.05f) {
			//	使小球朝向目标点
			transform.LookAt (targetPos);
			//	使小球运动
			transform.Translate (Vector3.forward * speed * Time.deltaTime);
		}
	}
	
	//	获取目标点
	void GetTargetPos () {
		//	1.	监听鼠标点击事件
		if (Input.GetMouseButtonDown (0)) {
			//	2.	获取从摄像机向鼠标当前位置发出的射线
			Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
			//	3.	创建一个用于保存碰撞信息的变量
			RaycastHit hitInfo = new RaycastHit ();
			//	4.	调用函数发射射线检测有没有碰撞到游戏对象
			if (Physics.Raycast (ray, out hitInfo)) {
			//	5.	判断发生碰撞的游戏对象是不是地板
				if (hitInfo.collider.gameObject.name == "Land") {
			//	6.	如果是地板,获取碰撞点的坐标
					targetPos = hitInfo.point;
			//	修改目标点的 Y 值
					targetPos.y = transform.position.y;
					Debug.Log ("targetPos" + targetPos);
				}
			}
		}
	}
}

给小球设置一个滚动到速度Speed。

效果为点击绿地上点一点,小球会移动到鼠标点击点。




在游戏中可以实现游戏人物随着鼠标移动

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值