unity中鼠标点击触发物体运动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity中鼠标点击触发物体运动相关的知识,希望对你有一定的参考价值。

求教程!急用!

你要控制物体移动的话,可以通过iTween插件来控制物体运动,简单的运动你可以看看网上的iTween教程。
移动模型时候用到的几个核心方法如下:
iTween.MoveTo(): 让模型移动到一个位置,它的底层函数是通过动态的修改模型每一帧的transform.position完成的,所以它会百分之百到达目标点,不会出现误差。
iTween.MoveFrom():它和上面的一样,iTween.MoveTo()是将模型移动到目标位置,而iTween.MoveFrom()是将模型从目标位置移动到原始位置。
iTween.MoveAdd() 和iTween.MoveBy()底层实现一样,大家可以去看源码。处理移动时采用的是transform.Translate也就是API的平移,这样在处理移动的时候可能会出现一些误差,但是效果好点。
iTween.MoveUpdate():和iTween.MoveTo()差不多,只是它需要放在循环或者Update()中。
参考技术A 请问是触发什么运动?
给物体加个box collider 然后写个c#代码
void OnMouseDown()
这里写上你要触发事件的内容,譬如播放动画,animation.play("动画名"),譬如移动物体,transform.translate(0,0,1);

Unity中OnTriggerEnter条件以及isTrigger的一个问题

该函数触发的条件:

1、两个物体都必须有碰撞器(Collider)组件;

2、其中一个物体的碰撞器(Collider)的IsTrigger属性必须勾上;

3、最重要的一点,其中一个物体必须有刚体(Rigidbody)组件。如果是一个运动的物体(如子弹)去碰撞一个静止的物体,则刚体(Rigidbody)组件必须加在运动的物体上,否则无法触发OnOnTriggerEnter函数。所以这时候子弹身上就要加一个Rigidboyd而不是character controller

Bug描述:游戏主角在静止状态下,一个自动运动的敌人碰撞主角,如果敌人身上没有刚体(Rigidbody)组件,主角则不会受到伤害(不会执行OnTriggerEnter函数中的代码)。

就是发生碰撞的主体一定是要带刚体的,即只有带刚体的碰撞体去撞其他碰撞体时,双方才会收到碰撞事件,比如:

一、控制A(刚体加碰撞体)撞击 静止的B(只有碰撞体),双方能收到碰撞事件。

二、控制B(只有碰撞体)撞击 静止的A(刚体加碰撞体),双方收不到碰撞事件。

三、让A(刚体加碰撞体)自由下落,然后控制B(只有碰撞体)去撞击A,双方能受到碰撞事件。

得出的结论似乎是如果碰撞双方只有一个有刚体,那么那个刚体一定要处于运动的状态下才会有碰撞事件发生。

此外还有两点:

一、产生触发事件的两个物体会相互穿越,isTrigger检测的是可穿越碰撞,准确的说是因为开启IsTrigger那个物体会被物理引擎锁忽略掉,所以会产生两个物体穿越的情况。如果人物有Rigidbody,而且想让人物和地面产生碰撞事件且不穿过地面,可以不勾选isTrigger,用OnCollisionEnter(Collision collison)检测碰撞。

二、两个对象要么都收到碰撞事件,要么都收到触发事件,不会出现一个收到触发事件,一个收到碰撞事件的情况。

可以参看这篇文章http://blog.csdn.net/monzart7an/article/details/22739421

以上是关于unity中鼠标点击触发物体运动的主要内容,如果未能解决你的问题,请参考以下文章

unity 鼠标点击一个物体后再点击另一个物体

unity3d中,怎样让鼠标点击一个物体后,摄像机就去拍摄这个物体?

unity中为啥鼠标点击后就看不见鼠标了

UNITY3d实现鼠标点击物体播放声音的效果

Unity3d C# 鼠标点击下物体,物体匀速旋转180°,要看到旋转过程,这个代码怎么写?

新人求教unity 2d 物体跟随鼠标移动的问题